我正在从事这个相当大的重构项目,并且正在使用intellij的带正则表达式的查找/替换来帮助我.
这是我正在使用的正则表达式:
\b(?<!\.)Units(?![_\w(.])\b
我发现大多数对我没有用的匹配项是用引号引起来的匹配项,例如:“ units”
我想找到一种方法,使上面的表达式在引号之间找到匹配的字符串时不匹配…
事先感谢,这个地方真棒!
解决方法:
假设引号始终在给定的行上配对,则可以在引号之前和之后创建偶数个匹配项,并确保整行都匹配:
^([^"]*("[^"]*")*[^"]*)*\b(?<!\.)Units(?![_\w(.])\b([^"]*("[^"]*")*[^"]*)*$
这行得通,因为片段
([^"]*("[^"]*")*[^"]*)*
只匹配成对的引号.通过添加开始和结束行锚点,它会强制将正则表达式左侧和右侧的引号计算为偶数.
这将无法正确处理嵌入的转义引号,并且多行引号引起的字符串将很麻烦.