【发布时间】:2012-07-16 04:21:35
【问题描述】:
我已开启不区分大小写功能...
我想在除watch?v=xxabcxx 或tumblr_asdfabcasdf 之外的任何地方匹配abc。
但如果我使用(watch\?v=[0-9a-zA-Z]){0}abc 与watch?v=xxabcxx 匹配,可能是因为引擎在检查abcxxx 之前失败。
【问题讨论】:
我已开启不区分大小写功能...
我想在除watch?v=xxabcxx 或tumblr_asdfabcasdf 之外的任何地方匹配abc。
但如果我使用(watch\?v=[0-9a-zA-Z]){0}abc 与watch?v=xxabcxx 匹配,可能是因为引擎在检查abcxxx 之前失败。
【问题讨论】:
在称为负向的正则表达式中向后看(也向前看,取决于您需要查看的方向)。查看“Positive and Negative Lookahead”上的教程。
您可能还需要检查“Regular expression negative lookahead”的问题和答案。
以(watch\?v=.*)(?<!xx)abc为例,(?<xx)abc部分可以读作abc只有在前面的字母与xx不匹配时才匹配,其中@ 987654327@ 是在应用b 之前放置条件a 的格式。此外,符号< 表示往后看,感叹号! 表示否定条件。我使用了一个通用的正则表达式,但你可以理解。
【讨论】:
(?<!watch\?v=[0-9a-zA-Z]*|tumblr_[0-9a-zA-Z]*)abc