正则表达式匹配除给定模式的单词之外的任何单词

时间:2014-03-28 08:55:43

标签: regex regex-negation regex-lookarounds regex-greedy

我希望匹配除以下单词之外的所有单词:

1) any-random-word 
2) any-random-word/ 
3) any-random-word/123 
4) any-random-word/abcdef

以便可以匹配类似的单词。

1) any-random-word123
2) any-random-word(any non-word character other than '/')123
2) any-random-wordabcdef
4) any-random-word(any non-word character other than '/')abcdef

事实上任何数字或任何字都可以在' any-random-word /'之后出现。

我试过

^(?!any-random-word(\/?)(\w+)$|any-random-word$)

但它逃避了所有包含任意随机词的单词。

感谢。

1 个答案:

答案 0 :(得分:1)

您可以稍微更改当前的正则表达式:

^(?!.*\bany-random-word\b)

如果您想要实际匹配某些内容,请在结尾处添加.+

^(?!.*\bany-random-word\b).+

regex101 demo

\b(单词边界)确保您不想匹配的单词周围没有其他\w个字符。


编辑:根据您的进一步澄清,我建议使用此正则表达式:

^(?!.*\bany-random-word(?:/|$)).+

正则表达式的主要部分是否定前瞻:(?!.*\bany-random-word(?:/|$))。如果内部匹配,则会导致整场比赛失败。

.*\bany-random-word(?:/|$)会在字符串末尾匹配any-random-word,或者跟/后面的字符串中的any-random-word/匹配。

因此,如果您有any-random-word,它将匹配,并导致整个匹配失败。如果您的字符串以{{1}}结尾,则整个匹配将失败。