关于否定正则表达式的另一个问题

时间:2010-12-08 15:36:06

标签: python regex

我有一个python脚本,用于检查编码约定错误的代码。它通过匹配表示违反编码标准的正则表达式来实现。

我们的标准之一是'if','while'和'do-while'条件必须包含条件运算符。

所以没有

if (var1)
{
    // blah
}

相反,我需要

if (var1 == TRUE)
{
    // blah
}

例如,if语句需要匹配行开头的“if”,并找到不包含“==”,“< =”,“> = “,”||“或“&&”它之后的任何地方我一直在靠墙撞击几个小时,我希望这里有人可以减轻一些痛苦!

2 个答案:

答案 0 :(得分:1)

这可以针对您提供的输入执行此操作,但正如评论中所述,使用解析器(例如pyparsing)更好。

>>> s
'if (var1)'
>>> s2
'if (var1 == TRUE)'
>>> if re.search(r"^if.+==|<=|>=|\|\||&&", s): print "found bad signs"
... 
>>> if re.search(r"^if.+==|<=|>=|\|\||&&", s2): print "found bad signs"
... 
found bad signs

答案 1 :(得分:0)

这是我最终做的事情,它在大多数情况下运作得相当好,但并不理想,我们正在研究第三方解析器。

^\s*\bif\s*\(\s*\w+\s*\)\s*$