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
(?: \ . [^"\]* )*
"
理想情况下,您应该在开头添加(原始正则表达式)(?<!\)(?:\\)*
,
确保不转义开头的双引号。
我正在尝试通过 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
(?: \ . [^"\]* )*
"
理想情况下,您应该在开头添加(原始正则表达式)(?<!\)(?:\\)*
,
确保不转义开头的双引号。