Regex 结合正向前瞻和反向前瞻-正则表达式
我正在Postgres9.5中使用Regex 结合正向前瞻和反向前瞻-正则表达式,regex,postgresql,lookahead,Regex,Postgresql,Lookahead,我正在Postgres9.5中使用~ 我想结合积极前瞻和消极前瞻。这是我的正则表达式,它不起作用: CHANGE.+(?=SHOES.+(?!NIKE)) 以下是我的问题,以下是我的问题示例: 匹配: CHANGE THE SHOES TO REBOOK. CHANGE OF SHOES TO NIKE AIRS. 不匹配: CHANGE THE SHOES TO REBOOK. CHANGE OF SHOES TO NIKE AIRS. 鞋之后的+是贪婪的,因此(?!将只在字符串末尾
~
我想结合积极前瞻和消极前瞻。这是我的正则表达式,它不起作用:
CHANGE.+(?=SHOES.+(?!NIKE))
以下是我的问题,以下是我的问题示例:
匹配:
CHANGE THE SHOES TO REBOOK.
CHANGE OF SHOES TO NIKE AIRS.
不匹配:
CHANGE THE SHOES TO REBOOK.
CHANGE OF SHOES TO NIKE AIRS.
鞋之后的
+
是贪婪的,因此(?!
将只在字符串末尾检查为真的位置(即那里没有NIKE
),因此没有回溯
而是这样做:
这里有一个解决方案,它只使用一个负前瞻:
SELECT *
FROM yourTable
WHERE col ~ 'CHANGE.+SHOES(?!.*NIKE)';
如果您想得到问题的确切答案,请参阅@trincot的回复