我正在尝试搜索所有不紧随“Thumb”出现的“Tom”。
我已经尝试查找
Tom ^((?!Thumb).)*$
但我仍然得到与Tom Thumb匹配的行。
我正在尝试搜索所有不紧随“Thumb”出现的“Tom”。
我已经尝试查找
Tom ^((?!Thumb).)*$
但我仍然得到与Tom Thumb匹配的行。
你没有说明你使用的正则表达式是哪一种,但是这个通用的方法应该可以解决问题:
Tom(?!\s+Thumb)
如果您不是在查找完整单词,您可以使用以下正则表达式:
Tom(?!.*Thumb)
如果在想要匹配之后还有更多的单词需要检查,您可以使用
Tom(?!.*(?:Thumb|Finger|more words here))
Tom(?!.*Thumb)(?!.*Finger)(?!.*more words here)
要使.
匹配换行,请参考如何在正则表达式中跨多行匹配任何字符?
请查看此正则表达式演示
如果你正在寻找整个单词(即只有当单词Tom
右侧没有整个单词Thumb
时才进行匹配),请使用
\bTom\b(?!.*\bThumb\b)
请查看另一个正则表达式演示
注意:
\b
- 匹配前导/尾随单词边界(?!.*Thumb)
- 是一个负向先行断言(negative lookahead),如果有任何0个或多个字符(取决于具体引擎是否包含/排除换行符号),后面跟着 Thumb
,则匹配失败。Tom(?!\s+Thumb)
是你要搜索的内容。