0

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

似乎没有工作...

if 类型的示例:

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

我也想排除else if

4

2 回答 2

3

没有范围的ifa 需要由 a 终止;。因此,您可以检查在 a;之后是否有 aif之前有 a {。这个正则表达式应该这样做:

(if[^{;]*;)

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

于 2013-01-02T07:58:38.503 回答
3

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

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

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

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

考虑这个例子 - 它不会通过上面的正则表达式,但按照你的规则显然没问题:

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

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

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

如果您想在这里获得坚如磐石的性能,您必须编写自己的代码解析器。

于 2013-01-02T08:28:29.407 回答