我正在从事这个相当大的重构项目,我正在使用 intellij 的查找/替换正则表达式来帮助我。
这是我正在使用的正则表达式:
\b(?<!\.)Units(?![_\w(.])\b
我发现大多数对我的目的没有用的匹配是引号内的字符串匹配,例如:“units”
我想找到一种方法,让上面的表达式在找到引号之间的匹配字符串时不匹配...
提前致谢,这个地方太棒了!
最佳答案
假设引号总是在给定行上配对,您可以在偶数个引号前后创建匹配项,并确保整行都匹配:
^([^"]*("[^"]*")*[^"]*)*\b(?<!\.)Units(?![_\w(.])\b([^"]*("[^"]*")*[^"]*)*$
这是有效的,因为片段
([^"]*("[^"]*")*[^"]*)*
只会匹配成对的引号。通过添加开始和结束行 anchor ,它会强制正则表达式左侧和右侧的引号为偶数。
这不会正确处理嵌入的转义引号,多行引号字符串会很麻烦。
关于java - 正则表达式排除引号内的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229208/