我正在使用(if\()(.*)(?!\{)
似乎没有工作......
if类型的示例:
if( ( Collection.containsKey( primaryKeyValue ) ) ) {
此外,我想排除else if
答案 0 :(得分:3)
没有范围的if
需要由;
终止。因此,您可以在;
之前检查if
之后是否存在{
。(if[^{;]*;)
。这个正则表达式应该这样做:
{{1}}
请注意,这需要多行正则表达式。
答案 1 :(得分:3)
此正则表达式匹配(大部分时间)if
语句,以;
结尾而不使用{
:
\bif\s*\([^\{]+;
(\b
是单词边界,以确保if是单独的,而不是像zif这样的另一个单词的一部分。
然而,这个正则表达式并不可靠。实际上,任何正则表达式解决方案在这里都不可100%可靠,因为您匹配的字符可以出现在if
条件内的字符串中。
考虑这个例子 - 它不会传递上面的正则表达式,而你的规则显然很好:
if (s.equals(";{;};")) { t="({;})"; }
它将传递这个例子,这是你的规则错误的:
if (s.equals("{;}")) t="({;})";
如果你想要坚如磐石的表现,你必须编写自己的代码解析器。