结合正面前瞻和负面前瞻 - 正则表达式
Combining Positive Lookahead and Negative Lookahead - Regex
我正在使用 ~
在 postgres 9.5 中编写一个简单的正则表达式
我想结合正面前瞻和负面前瞻。这是我的正则表达式,它不起作用:
CHANGE.+(?=SHOES.+(?!NIKE))
这是我的 DEMO,下面是我的问题示例:
匹配:
CHANGE THE SHOES TO REBOOK.
不匹配:
CHANGE OF SHOES TO NIKE AIRS.
SHOES
之后的 .+
是贪心的,因此 (?!
只会在字符串末尾为真时检查(即没有 NIKE
那里),所以没有回溯。
改为这样做:
这是一个仅使用单个否定前瞻的解决方案:
SELECT *
FROM yourTable
WHERE col ~ 'CHANGE.+SHOES(?!.*NIKE)';
如果您想得到问题的确切答案,请参阅@trincot 的回复。
我正在使用 ~
我想结合正面前瞻和负面前瞻。这是我的正则表达式,它不起作用:
CHANGE.+(?=SHOES.+(?!NIKE))
这是我的 DEMO,下面是我的问题示例:
匹配:
CHANGE THE SHOES TO REBOOK.
不匹配:
CHANGE OF SHOES TO NIKE AIRS.
SHOES
之后的 .+
是贪心的,因此 (?!
只会在字符串末尾为真时检查(即没有 NIKE
那里),所以没有回溯。
改为这样做:
这是一个仅使用单个否定前瞻的解决方案:
SELECT *
FROM yourTable
WHERE col ~ 'CHANGE.+SHOES(?!.*NIKE)';
如果您想得到问题的确切答案,请参阅@trincot 的回复。