为什么此REGEX与该模式匹配?

时间:2019-03-27 15:06:50

标签: regex intellij-idea

我不明白为什么我的模式在IntelliJ的查找/替换中匹配某些字符串。

我正在整理一些REGEX模式,这些模式可用于查找/替换某些编码标准,例如将null检查翻转为左侧有null。在这种情况下,我尝试设置一个isEmpty转换器,该转换器识别.size或.length比较为0,如if(foo.size() == 0)if(zig.zag().length == 0)

但是,我的模式

((?:\w+\(?\)?\.)+)\blength\(?\)?|\bsize\(\) ?== ?0

foo.length匹配,如

for(int i=0; i<foo.length; i++)

我希望此模式匹配空字符串/集合检查,例如foo.length == 0bar.size() == 0,以便将它们转换为使用isEmpty()(即foo.isEmpty())。但不能匹配其他情况,例如上述情况。我还希望此REGEX对空字符串空集合检查都有用。

1 个答案:

答案 0 :(得分:0)

|运算符的优先级非常低,您应该在length|size\(\)周围加上括号:

(\w*\.)+\b(length|size\(\)) ?== ?0
相关问题