python正则表达式匹配有效的c表达式

时间:2018-07-19 13:20:07

标签: python

请原谅我的英语不好。让我更加清楚:我有一个cpp文件,其中包含一些文本,例如:

snprintf(buf,sizeof(buf),"It is python %d,%s",32,"Hello world");

Fmt(100,"This is another %d %s statement",a.getsize().getsize(),"hello")

当然还有其他一些文本

我想做的是使用python正则表达式读取此文件并匹配这些文本并将匹配组输出到另一个文件 我希望我的正则表达式匹配组为:

"It is python %d,%s",32,"Hello world"); or
"This is another %d %s statement",a.getsize().getsize(),"hello"

我已经尝试过以下正则表达式;

 pattern1=r"\bsnprintf\s*\(\s*\w+\s*\,.*?(\"(?:.|\n)*?)"\)\;"
 pattern2=r"\bFmt\b\s*\([\s*\d+\s*\]\s*\,\s*(\".*?\))

但是我被困在这里:     patter2仅是匹配组“这是另一个%d%s语句” a.getsize()。这不是我想要的

1 个答案:

答案 0 :(得分:0)

您无法使用完整的泛型表达式,因为组合的数量是无限的。 任何c字符串说明符均可按任何顺序多次使用。 例如;让我们来%d和%s: “%d”,“%d%s”,%d%s%d“,您就明白了。

但是,您可以匹配字符串“”并以编程方式对其进行解析,也可以将正则表达式用于组合的子集。