正则表达式找到没有“{”的所有“if”语句

时间:2013-01-02 07:50:49

标签: regex

我正在使用(if\()(.*)(?!\{)

似乎没有工作......

if类型的示例:

  

if( ( Collection.containsKey( primaryKeyValue ) ) ) {

此外,我想排除else if

2 个答案:

答案 0 :(得分:3)

没有范围的if需要由;终止。因此,您可以在;之前检查if之后是否存在{(if[^{;]*;) 。这个正则表达式应该这样做:

{{1}}

请注意,这需要多行正则表达式。

答案 1 :(得分:3)

此正则表达式匹配(大部分时间)if语句,以;结尾而不使用{

\bif\s*\([^\{]+;

\b是单词边界,以确保if是单独的,而不是像zif这样的另一个单词的一部分。

然而,这个正则表达式并不可靠。实际上,任何正则表达式解决方案在这里都不可100%可靠,因为您匹配的字符可以出现在if条件内的字符串中。

考虑这个例子 - 它不会传递上面的正则表达式,而你的规则显然很好:

if (s.equals(";{;};")) { t="({;})"; }

它将传递这个例子,这是你的规则错误的:

if (s.equals("{;}")) t="({;})";

如果你想要坚如磐石的表现,你必须编写自己的代码解析器。