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