Skip to main content
 首页 » 编程设计

python之C中赋值运算符的正则表达式匹配

2024年10月01日25Free-Thinker

我正在尝试编写一个正则表达式,在我已经提取的 C 语言条件语句中捕获赋值等号(使用 python 模块 re)。

我的尝试:

exp = re.compile(r'\(\s*[0-9A-Za-z_]+\s*[^!<>=]=[^=]') 

虽然适用于多种情况,但无法匹配像以下字符串这样的简单情况:

'(c=getc(pp)) == EOF' 

有人可以解释为什么我的正则表达式不匹配这个字符串,我怎样才能让它变得更好?我知道我可能仍然无法理解一些奇怪的情况,但我可以手动处理这些情况,目的是自动完成大部分的跑腿工作。

请您参考如下方法:

[^!<>=]遵循您的标识符可防止 =在 c 之后匹配.

如果您的目的是匹配赋值,请尝试只匹配标识符后的一个等号,如下所示:

exp = re.compile(r'\(\s*[0-9A-Za-z_]+\s*=[^=]') 
 
print(exp.search('(c=getc(pp)) == EOF')) 

结果是:

<_sre.SRE_Match object; span=(0, 4), match='(c=g'>