java - 如何找到只匹配 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"
解决方案
您可以使用negative lookbehind
(?<!RIGHT OUTER\s)(?<!LEFT OUTER\s)JOIN
(?<!RIGHT OUTER\s)
- 不应该在前面RIGHT OUTER
(?<!LEFT OUTER\s)
- 不应该在前面LEFT OUTER
JOIN
- 火柴JOIN