【问题标题】:Combining Positive Lookahead and Negative Lookahead - Regex结合正前瞻和负前瞻 - 正则表达式
【发布时间】:2018-11-03 00:19:29
【问题描述】:

我正在使用 ~ 在 postgres 9.5 中编写一个简单的正则表达式

我想将积极的前瞻和消极的前瞻结合起来。这是我的正则表达式,它不起作用:

CHANGE.+(?=SHOES.+(?!NIKE))

这是我的DEMO,下面是我的问题示例:

比赛:

CHANGE THE SHOES TO REBOOK.

不匹配:

CHANGE OF SHOES TO NIKE AIRS.

【问题讨论】:

    标签: regex postgresql lookahead


    【解决方案1】:

    这是一个仅使用单个否定前瞻的解决方案:

    SELECT *
    FROM yourTable
    WHERE col ~ 'CHANGE.+SHOES(?!.*NIKE)';
    

    如果您想知道问题的确切答案,请参阅@trincot 的回复。

    【讨论】:

      【解决方案2】:

      SHOES 之后的 .+ 是贪婪的,因此 (?! 只会在字符串末尾为真时检查(即那里没有 NIKE),因此没有回溯.

      改为这样做:

      CHANGE.+(?=SHOES(?!.*NIKE))

      【讨论】:

        猜你喜欢
        • 2021-10-11
        • 2012-12-13
        • 2011-10-14
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多