为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥6287543 2019-07-05 09:54:14
如何否定正则表达式中的特定词?我知道我可以否定一组字符[^bar]但我需要一个正则表达式,其中否定适用于特定的单词-所以在我的例子中,我如何否定一个实际的"bar"而不是"any chars in bar"?
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

一个很好的方法就是使用负前瞻:

^(?!.*bar).*$

负展望结构是一对括号,开头括号后面跟着问号和感叹号。在展望内部[是任何正则表达式]。


查看完整回答
反对 回复 2019-07-05
?
三国纷争

TA贡献1804条经验 获得超7个赞

除非性能是最重要的,否则只需第二遍运行结果就更容易了,跳过那些与您想要否定的单词匹配的结果就更容易了。

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


查看完整回答
反对 回复 2019-07-05
?
holdtom

TA贡献1805条经验 获得超10个赞

下面的regex将执行您想做的事情(只要支持负的查找后置和查找头),正确地匹配事物;唯一的问题是它匹配单个字符(即每一个匹配是一个字符,而不是两个连续的“bar”之间的所有字符),如果您使用非常长的字符串,可能会导致很高的开销。

b(?!ar)|(?<!b)a|a(?!r)|(?<!ba)r|[^bar]


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 745 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信