【问题标题】:Regex to match string containing certain words but not other正则表达式匹配包含某些单词但不包含其他单词的字符串
【发布时间】:2020-11-20 21:49:18
【问题描述】:

我正在尝试编写一个正则表达式来匹配字符串中包含“foo”或“bar”但不包含“baz”的单词。

/(foo|bar).*(?!baz)/

我如何做到这一点?

【问题讨论】:

  • 使用/^(?!.*baz).*(?:foo|bar)/

标签: regex


【解决方案1】:

你可以使用这个正则表达式:

^(?!.*\bbaz\b).*\b(?:foo|bar)\b

(?!.*\bbaz\b) 是否定的先行条件,如果在输入中的任何位置找到单词 baz,则匹配失败。

RegEx Demo

【讨论】:

  • 谢谢,如何在否定情况下使用多个字符串,例如“baz”和“abc”?
  • @Nemo 你可以使用:^(?!.*\b(?:baz|abc)\b).*\b(?:foo|bar)\b
  • 不确定这是否有效:re.match("^(?!.*\bbaz\b).*\b(?:foo|bar)\b", "foo bar") return None
  • @Wang:使用re.match(r"^(?!.*\bbaz\b).*\b(?:foo|bar)\b", "foo bar") 并阅读 Python 中的原始字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 2016-12-06
  • 2015-01-08
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多