35

我正在尝试搜索所有出现的“Tom”后面没有出现“Thumb”。

我试图寻找

Tom ^((?!Thumb).)*$

但我仍然得到与汤姆拇指匹配的线条。

4

3 回答 3

36

你没有说你正在使用什么风格的正则表达式,但这通常应该有效:

 Tom(?!\s+Thumb)
于 2012-04-29T19:09:16.870 回答
22

如果您不是在寻找整个单词,您可以使用以下正则表达式:

Tom(?!.*Thumb)

如果在通缉匹配后有更多单词要检查,您可以使用

Tom(?!.*(?:Thumb|Finger|more words here))
Tom(?!.*Thumb)(?!.*Finger)(?!.*more words here)

要进行.匹配换行符,请参阅如何在正则表达式中匹配多行中的任何字符?

看到这个正则表达式演示

如果您正在查找整个单词(即,只有在其右侧Tom没有整个单词时才应匹配整个单词),请使用Thumb

\bTom\b(?!.*\bThumb\b)

查看另一个正则表达式演示

注意:

  • \b- 匹配前导/尾随单词边界
  • (?!.*Thumb)-如果后面有任何 0+ 个字符(取决于引擎,包括/不包括换行符),则匹配失败Thumb
于 2016-09-27T08:11:44.783 回答
1

Tom(?!\s+Thumb)是您搜索的内容。

于 2012-04-29T19:10:46.953 回答