正则表达式找到一个单词,但排除一个更大的单词

时间:2015-10-12 15:27:34

标签: regex

我想搜索一个字但排除包含更大字词的匹配项,例如我想搜索“dog”但排除包含“doggie”的匹配。

所以“大狗”和“大狗”应该匹配而不是“大狗”

以下内容不应与

匹配
big doggie
bigdoggie
doggiebig
bigdoggiebad

以下应该匹配

bigdog
dogbig
baddogbig

我能想到的最好的是这个,但它不起作用:

(?!doggie)dog

2 个答案:

答案 0 :(得分:4)

使用负面展望:

dog(?!gie)

请参阅live demo使用您的所有示例,例如

big dog (matches)
big doggy (matches)
big doggie (no match)

顺便提一下,你的尝试也是有效的(它只会在表达式中轻微重复" dog"。

答案 1 :(得分:0)

使用单词边界字符(\b):

\bdog\b