java - 正则表达式排除引号内的匹配项

标签 java regex jsp refactoring intellij-idea

我正在从事这个相当大的重构项目,我正在使用 intellij 的查找/替换正则表达式来帮助我。

这是我正在使用的正则表达式:

\b(?<!\.)Units(?![_\w(.])\b

我发现大多数对我的目的没有用的匹配是引号内的字符串匹配,例如:“units”

我想找到一种方法,让上面的表达式在找到引号之间的匹配字符串时不匹配...

提前致谢,这个地方太棒了!

最佳答案

假设引号总是在给定行上配对,您可以在偶数个引号前后创建匹配项,并确保整行都匹配:

^([^"]*("[^"]*")*[^"]*)*\b(?<!\.)Units(?![_\w(.])\b([^"]*("[^"]*")*[^"]*)*$

这是有效的,因为片段

([^"]*("[^"]*")*[^"]*)*

只会匹配成对的引号。通过添加开始和结束行 anchor ,它会强制正则表达式左侧和右侧的引号为偶数。

这不会正确处理嵌入的转义引号,多行引号字符串会很麻烦。

关于java - 正则表达式排除引号内的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229208/

相关文章:

java - Future.cancel(false) 的用例?

java - 使用 Java 将目录内容从本地文件系统移动到 HDFS

java - Eclipse JSP "cannot be resolved to a type"Apache 公共(public)资源

java - 如何在jsp中访问spring mvc的form对象?

ruby - 进行一次 gsub 调用而不是五次

java - 在 Java EE Web 应用程序中创建自定义 URL

java - Hibernate 中的日期和时间跨度查询

java - 多模块maven VS 微服务架构

JavaScript 正则表达式替换哈希

ruby - 在ruby正则表达式中以@符号开头的单词之间插入html标签