Python:正则表达式匹配多行C字符串

时间:2016-01-15 22:55:04

标签: python regex string multiline

我正在尝试通过re模块匹配多行C字符串。

我想匹配表单的字符串:

char * theString = "Some string \
                   I want to match.";

我尝试了以下正则表达式,但不起作用:

regex = re.compile(r"\".*\"$", re.MULTILINE)

我认为它会匹配第一个“,然后继续搜索下一行,直到它找到一个结束”,但事实并非如此。这是因为$要求“在行的末尾匹配吗?有没有办法使用正则表达式来做到这一点?

1 个答案:

答案 0 :(得分:1)

使用dot all flag。

但是,这是解析C字符串的方法。 (?s)"[^"\\]*(?:\\.[^"\\]*)*"

如果它不支持(?s)内联修饰符,请在flags参数中设置修饰符。

re.compile(r'"[^"\\]*(?:\\.[^"\\]*)*"', re.DOTALL)

 (?s)
 "
 [^"\\]*                       # Double quoted text
 (?: \\ . [^"\\]* )*
 "

理想情况下,您应该在开头添加(原始正则表达式)(?<!\\)(?:\\\\)*
确保开头双引号不被转义。