首页 > 解决方案 > 如何找到只匹配 JOIN 而不是 LEFT OUTER JOIN 和 INNER OUTER JOIN 的正则表达式

问题描述

我正在解决一个问题,我需要找到一个仅匹配单词 JOIN 而不是 RIGHT OUTER JOIN 或 LEFT OUTER JOIN 的 reqex

所以我只想替换 join 而不是 LEFT OUTER JOIN 或 RIGHT OUTER JOIN 在一个句子中。

我正在努力拥有这样的正则表达式,但在此之后我被卡住了

"REGEX_FIND_OUT" = ^((?!LEFT OUTER JOIN | RIGHT OUTER JOIN).)*$

System.out.println("dfdsfsdfds JOIN dsfsdfd LEFT OUTER JOIN dfdfgdg RIGHT OUTER JOINdsfsdf".replaceAll("REGEX_FIND_OUT", "replace"));

输出应该是

"dfdsfsdfds replace dsfsdfd LEFT OUTER JOIN dfdfgdg RIGHT OUTER JOINdsfsdf"

标签: javaregexpattern-matching

解决方案


您可以使用negative lookbehind

(?<!RIGHT OUTER\s)(?<!LEFT OUTER\s)JOIN
  • (?<!RIGHT OUTER\s)- 不应该在前面RIGHT OUTER
  • (?<!LEFT OUTER\s)- 不应该在前面LEFT OUTER
  • JOIN- 火柴JOIN

Demo


推荐阅读