如何否定正则表达式中的特定单词?
我知道我可以在[^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