我不明白为什么我的模式在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 == 0
或bar.size() == 0
,以便将它们转换为使用isEmpty()(即foo.isEmpty()
)。但不能匹配其他情况,例如上述情况。我还希望此REGEX对空字符串和空集合检查都有用。
答案 0 :(得分:0)
|
运算符的优先级非常低,您应该在length|size\(\)
周围加上括号:
(\w*\.)+\b(length|size\(\)) ?== ?0