猿问

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

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

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


慕哥6287543
浏览 816回答 3
3回答

qq_花开花谢_0

一个很好的方法就是使用负前瞻:^(?!.*bar).*$负展望结构是一对括号,开头括号后面跟着问号和感叹号。在展望内部[是任何正则表达式]。

三国纷争

除非性能是最重要的,否则只需第二遍运行结果就更容易了,跳过那些与您想要否定的单词匹配的结果就更容易了。正则表达式通常意味着您正在执行脚本或某种低性能的任务,因此要找到一个易于阅读、易于理解和易于维护的解决方案。

holdtom

下面的regex将执行您想做的事情(只要支持负的查找后置和查找头),正确地匹配事物;唯一的问题是它匹配单个字符(即每一个匹配是一个字符,而不是两个连续的“bar”之间的所有字符),如果您使用非常长的字符串,可能会导致很高的开销。b(?!ar)|(?<!b)a|a(?!r)|(?<!ba)r|[^bar]
随时随地看视频慕课网APP
我要回答