当我第一次发现不需要的东西时,如何使正则表达式不匹配

时间:2009-06-19 20:12:14

标签: regex

我想使用正则表达式在我的示例中查找特定字符串,但是如果我第一次找到另一个字符串,我希望正则表达式失败。让我举个例子:

仅在我们不首次遇到find_me时才匹配stop_here。 (我不在乎样本中稍后会出现stop_here。)

所以,这应该匹配:

blah blah find_me blah stop_here

但这不应该:

blah blah stop_here blah find_me

(我正在使用.NET正则表达式引擎)

2 个答案:

答案 0 :(得分:8)

^(?:(?!stop_here).)*find_me

答案 1 :(得分:2)

不确定.NET正则表达式引擎,但我只是对find_me或stop_here进行正则表达式搜索,然后检查哪一个匹配。在perl:

if ($stuff =~ /(find_me|stop_here)/) {
  if ($1 == "find_me") {
    ...
  } elsif ($1 == "stop_here") {
    ...
  }
}