【问题标题】:How to find regex that match only JOIN and not LEFT OUTER JOIN and INNER OUTER JOIN如何找到只匹配 JOIN 而不是 LEFT OUTER JOIN 和 INNER OUTER JOIN 的正则表达式
【发布时间】:2026-02-24 16:40:01
【问题描述】:

我正在解决一个问题,我需要找到一个仅匹配单词 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"

【问题讨论】:

    标签: java regex pattern-matching


    【解决方案1】:

    您可以使用negative lookbehind

    (?<!RIGHT OUTER\s)(?<!LEFT OUTER\s)JOIN
    
    • (?&lt;!RIGHT OUTER\s) - 前面不应有 RIGHT OUTER
    • (?&lt;!LEFT OUTER\s) - 前面不应有 LEFT OUTER
    • JOIN - 匹配 JOIN

    Demo

    【讨论】: