我有一个python脚本,用于检查编码约定错误的代码。它通过匹配表示违反编码标准的正则表达式来实现。
我们的标准之一是'if','while'和'do-while'条件必须包含条件运算符。
所以没有
if (var1)
{
// blah
}
相反,我需要
if (var1 == TRUE)
{
// blah
}
例如,if语句需要匹配行开头的“if”,并找到不包含“==”,“< =”,“> = “,”||“或“&&”它之后的任何地方我一直在靠墙撞击几个小时,我希望这里有人可以减轻一些痛苦!
答案 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*$