【发布时间】:2011-09-17 03:39:42
【问题描述】:
我需要这是一个单一的正则表达式,因为它进入了 Google 搜索设备的“请勿抓取”列表。 (我相信 Google 正则表达式类似于 GNU 正则表达式。)所以我也没有选择使用代码(任何语言)来代替。
以前有人问过这个问题,但答案通常是代码而不是正则表达式。
我想要做的是匹配一个字符串,如果它包含子字符串 aaa 仅当它不包含子字符串 bbb 时。
作为更具体的示例:如果字符串包含“/RFA/”,但仅当它不包含“Google=yes”时,我想匹配。
所以:“blahblah/RFA/index.cfm?Review=1&blahblah”应该匹配。
但是:“blahblah/RFA/index.cfm?Review=1&Google=yes&blahblah”应该会失败。
顺便说一句,如果它简化了任何事情,那么当它出现时,bbb 子字符串将始终位于 aaa 子字符串之后。
【问题讨论】:
-
您只需要负前瞻和后视,在字符串的任一侧搜索“bbb”。
-
@Neil 我不确定基本的 GNU 正则表达式是否支持前瞻和后瞻。
-
那就不可能了。 Lookahead 和lookbehinds 使得在其周围环境中捕获值成为可能。另一种方法是捕获整个表达式,除非允许捕获组。
标签: regex