我需要一个匹配除三个确切单词之外的所有内容的正则表达式。例如,我不希望它匹配红色,绿色和蓝色。所以它不应该匹配红色,绿色或蓝色,但它应该匹配常绿和绿色。
有没有办法在正则表达式中执行此操作?
答案 0 :(得分:5)
要捕获greens
或blueberry
,我们可以向前瞻添加\b
(因此它必须是单数字“蓝色”,“红色”或“绿色” “):
(\b(?!red\b|green\b|blue\b)\w+\b)
东西 绿色 常青树 红色 fred的 蓝色 navyblue 绿色 东西 蓝莓 否则
根据您的正则表达式的风格,您可以使用否定的预测:
(\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
东西 绿色 常青树 红色 fred的 蓝色 navyblue 东西 否则