3

我需要一个匹配所有内容的正则表达式,除了三个确切的单词。例如,我不希望它匹配红色、绿色和蓝色。所以它不应该匹配红色、绿色或蓝色,但它应该匹配常绿和绿色。

有没有办法在正则表达式中做到这一点?

4

1 回答 1

5

更新

要捕获greens,或者blueberry我们可以在前瞻中添加一个\b(因此它必须是单数单词“blue”、“red”或“green”):

(\b(?!red\b|green\b|blue\b)\w+\b)

导致

something 绿色 evergreens 红色 fred 蓝色 navyblue greens something blueberry else


根据您的正则表达式的风格,您可以使用负前瞻:

(\b(?!red|green|blue)\w+\b)

这基本上意味着:

(                         # begin capture
  \b                      # word delimeter
  (?!red|green|blue)      # exceptions
  \w+                     # capture any word-characters (equiv: [a-zA-Z_])
  \b                      # word delimeter
)                         # end capture

示例:http ://regexr.com?354la

something 绿色 evergreens 红色 fred 蓝色 navyblue something else

于 2013-06-05T23:09:43.763 回答