Python:正则表达式匹配C代码中的多行字符串

Python: Regex to match multiline strings in C code

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

我想匹配以下形式的字符串:

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

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

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

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

使用全点标志。

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

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

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

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

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