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

2024-04-19 08:40:13 发布

您现在位置: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()。这不是我想要的


Tags: 文件文本helloworldisanotheritthis
1条回答
网友
1楼 · 发布于 2024-04-19 08:40:13

不能有完整的泛型表达式,因为有无限个组合。 任何c字符串说明符都可以按任何顺序多次使用。 例如;以%d和%s为例: “%d”,“%d%s”,%d%s%d”,你明白了

但是,您可以匹配字符串“”并以编程方式对其进行解析,或者使用regex对组合的子集进行解析

相关问题 更多 >