我正在尝试通过re模块匹配多行C字符串。
我想匹配表单的字符串:
char * theString = "Some string \
I want to match.";
我尝试了以下正则表达式,但不起作用:
regex = re.compile(r"\".*\"$", re.MULTILINE)
我认为它会匹配第一个“,然后继续搜索下一行,直到它找到一个结束”,但事实并非如此。这是因为$要求“在行的末尾匹配吗?有没有办法使用正则表达式来做到这一点?
答案 0 :(得分:1)
使用dot all flag。
但是,这是解析C字符串的方法。 (?s)"[^"\\]*(?:\\.[^"\\]*)*"
如果它不支持(?s)
内联修饰符,请在flags参数中设置修饰符。
re.compile(r'"[^"\\]*(?:\\.[^"\\]*)*"', re.DOTALL)
(?s)
"
[^"\\]* # Double quoted text
(?: \\ . [^"\\]* )*
"
理想情况下,您应该在开头添加(原始正则表达式)(?<!\\)(?:\\\\)*
,
确保开头双引号不被转义。