正则表达式-匹配直到一组多种可能性

我有以下文字:
你可能有那个东西,不,你没有,但也许是

我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的词,在本例中为“NO”“BUT”,如果字符串包含这两个词,则在第一个词处停止:

你可能有那个东西不,你没有,但也许是的,
你可能有那个东西

你可能有你没有的东西也许是的
你可能有你没有的东西

我正在尝试下面的正则表达式,但问题是它在BUT停止,即使它没有

(.*)(?:NO|BUT)

匹配上述正则表达式的示例,粗体表示完整匹配,斜体表示组 1:
您可能有那个东西 NO 你没有也许是

我的期望:
你可能有那个东西,不,你没有,但也许是的

回答

让我们修复您的正则表达式模式

^(.*?)s*(?:NO|BUT)

现在我们可以使用上面的regex模式search

s = 'You may have that thing NO you dont BUT maybe yes'
match = re.search(r'^(.*?)s*(?:NO|BUT)', s)

>>> match.group(1)
'You may have that thing'

正则表达式详细信息:

  • ^ : 在行首断言位置
  • (.*?) : 第一个捕获组
    • .*? : 匹配任何字符零次或多次,但尽可能少
  • s* : 零个或多个空白字符
  • (?:NO|BUT) : 非捕获组
    • NO|BUT: 匹配NO,BUT

看网上 regex demo


以上是正则表达式-匹配直到一组多种可能性的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>