如何否定正则表达式中的特定单词?

我知道我可以在[^bar]否定字符组,但是我需要一个正则表达式,其中否定适用于特定单词 - 所以在我的示例中,我如何否定实际的"bar"而不是"any chars in bar"


一个很好的方法是使用负面看法:

^(?!.*bar).*$

除非性能是最重要的考虑因素,否则通过第二遍运行结果通常会更容易,跳过那些与您想要否定的词相匹配的结果。

正则表达式通常意味着您正在执行脚本或某种低性能任务,因此找到易于阅读,易于理解且易于维护的解决方案。


下面的正则表达式会做你想做的事情(只要支持负向lookbeheads和lookaheads),正确地匹配事物; 唯一的问题是它匹配单个字符(即每个匹配是单个字符而不是两个连续“条”之间的所有字符),如果您使用的字符串很长,可能会导致高额开销。

b(?!ar)|(?<!b)a|a(?!r)|(?<!ba)r|[^bar]
链接地址: http://www.djcxy.com/p/13441.html

上一篇: How to negate specific word in regex?

下一篇: Regular Expressions: Is there an AND operator?