不匹配任何精确单词的正则表达式

3
我需要一个正则表达式,可以匹配除了三个确切的词以外的所有内容。例如,我不想匹配red、green和blue。因此,它不应该匹配red、green或blue,但是应该匹配evergreen和greens。
有没有办法在正则表达式中实现这个要求?

请展示您目前的进展,您的方法以及您选择使用的风格。 - Seeta Somagani
1个回答

5

更新

为了捕获greensblueberry,我们可以在前瞻中添加\b(这样它必须是单词“blue”,“red”或“green”):

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

以下是相关的it技术翻译:

这将产生如下结果:

something 显示为绿色 evergreens 显示为红色 fred 显示为蓝色 navyblue greens 显示为绿色 something blueberry 显示为蓝色 else


根据你所使用的正则表达式的不同,你可以使用负向先行断言(negative look-ahead):

(\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


谢谢你,Brad!那跟我想要的差不多,但问题是它不能匹配绿色。这是我无法解决的难题。任何帮助将不胜感激。谢谢! - ZShah
@ZShah:好的,试一下看看。 - Brad Christie
太棒了!非常感谢!!它解决了问题,同时也学到了很多新东西,特别是在前瞻中结合单词边界。 - ZShah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接