java – 替换不在字符串上的单词

我试图在文件出现时替换它,除非它包含在字符串中:

所以我应该替换它

The test in this line consists in ... 

但不应该匹配:

The test "in this line" consist in ... 

这就是我正在尝试的:

 line.replaceAll( "\\s+this\\s+", " that ")

但它失败了这个场景所以我尝试使用:

 line.replaceAll( "[^\"]\\s+this\\s+", " that ")

但也不起作用.

任何帮助,将不胜感激

解决方法:

这似乎有效(据我所知,从提供的示例中了解您的要求):

 (?!.*\s+this\s+.*\")\s+this\s+

http://rubular.com/r/jZvR4XEbRf

您可能需要调整java的转义.

实际上这有点好一点:

 (?!\".*\s+this\s+)(?!\s+this\s+.*\")\s+this\s+
上一篇:JAVA利用正则表达式去掉span标签及内容、去掉a标签保留内容


下一篇:用于字符串的Java replaceALL