我试图在C语言代码中通过 re
模块。
我想匹配以下形式的字符串。
char * theString = "Some string \
I want to match.";
我试了下面的regex, 但没有用:
regex = re.compile(r"\".*\"$", re.MULTILINE)
我以为它会匹配第一个"", 然后继续搜索下一行 直到找到一个""的结尾, 但事实并非如此. 这是因为$要求行末有一个""才能匹配吗? 有没有什么方法可以用regex来实现?
使用dot all标志。
然而,这是解析C字符串的方法。 (?s)"[^"\\]*(?:\\.[^"\\]*)*"
如果它不支持 (?s)
inline修饰符,在flags参数中设置修饰符。
re.compile(r'"[^"\\]*(?:\\.[^"\\]*)*"', re.DOTALL)
(?s)
"
[^"\\]* # Double quoted text
(?: \\ . [^"\\]* )*
"
理想的情况下,你应该添加(原始regex) (?<!\\)(?:\\\\)*
在开头,确保开头的双引号不被转义。