Python: 在C代码中匹配多行字符串的Regex。

问题描述 投票:1回答:1

我试图在C语言代码中通过 re 模块。

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

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

我试了下面的regex, 但没有用:

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

我以为它会匹配第一个"", 然后继续搜索下一行 直到找到一个""的结尾, 但事实并非如此. 这是因为$要求行末有一个""才能匹配吗? 有没有什么方法可以用regex来实现?

python regex string multiline
1个回答
1
投票

使用dot all标志。

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

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

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

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

理想的情况下,你应该添加(原始regex) (?<!\\)(?:\\\\)* 在开头,确保开头的双引号不被转义。

© www.soinside.com 2019 - 2024. All rights reserved.