Regex 负环视——正则表达式

Regex 负环视——正则表达式,regex,Regex,我正试图自己学习正则表达式,因此这是一个愚蠢的活动 我试图检索任何一个包含“football”的单词,但将“footballs”排除在外——这样我就可以得到其他任何东西——football,football,football。只是不是“足球” 我发现\bfootball(?s)\b既可以摆脱足球运动员,也可以摆脱足球。我如何只排除“足球” \bfootball(?!s)\b排除了“足球运动员”,因为您要查找单词边界,然后是“football”,然后不是s,然后是另一个单词边界(这不允许您在“fo

我正试图自己学习正则表达式,因此这是一个愚蠢的活动

我试图检索任何一个包含“football”的单词,但将“footballs”排除在外——这样我就可以得到其他任何东西——football,football,football。只是不是“足球”


我发现
\bfootball(?s)\b
既可以摆脱足球运动员,也可以摆脱足球。我如何只排除“足球”

\bfootball(?!s)\b
排除了“足球运动员”,因为您要查找单词边界,然后是“football”,然后不是s,然后是另一个单词边界(这不允许您在“football”之后查找任何内容)。去掉结束词边界(换句话说,改用
\bfootball(?s\b)

必须在断言内移动词边界:

/\bfootball(?!s\b)/
这比完全删除单词边界更正确。 当您完全删除边界时,您将丢失带有
s
的单词及其后面的内容:
足球a
例如。

不,不是<代码>足球A例如,然后使用
\b足球(?s\b)
。关键是你不希望“边界”一词总是出现在“足球”之后。@palardia:我知道,在我添加这句话之前,我已经在我的解决方案中写下了这一点;我只是想指出,您最初的解决方案是不正确的。