Visual studio 2013 正则表达式搜索:查找 "if (something > 0)" + 变体形式的所有字符串

Visual studio 2013 regex search : looking for all strings of the form "if (something > 0)" + variations

我正在使用 visual studio 2013 并使用相当大的 c++/c# 库。在其中,我正在寻找 ifXPOXvarXsymXzeroXPC 形式的字符串的所有出现,其中:

我要捕获的字符串示例:

if    avar  <=   0.
if(anothervar>0)
if yetanothervar>  0
if ( lastvar >= 0.0 )

等等...

我尝试了 if \s*\(\s*\w+ > 0\.?[=29=]?\s*\)\s*if \s*\(\s*\w+\s*>\s*0\.?[=30=]?\s*\)\s* 但没有成功,因为我每次都在结果列表中指出我没有得到所有的东西。顺便说一句,我真的很想坚持使用 visual studio 2013 年的正则表达式。

理想情况下,我还想找到 PO 可以由多个左括号组成的字符串,其中我省略了 PC,以便能够找到 PC 形式的字符串=33=] 其中寻找的代数条件属于许多 "algebraic comparisions" 或其他比较的组合。

这是您可以在此处利用的正则表达式:

(?m)^if\s*\(?\s*\w+\s*[<>]=?\s*0\.?0?\s*\)?

demo

注意强制^匹配行首的多行模式的使用。如果 if 不在行首,请将 ^ 替换为 \b

这个正则表达式应该可以解决问题:

^if\s*(*\s*\w+\s*[!=<>&|]+\s*0.?0?\s*)*\ s*

已测试here

注意:正则表达式 [!=<>&|] 用于匹配任何关系运算符或逻辑运算符。