正则表达式-匹配直到一组多种可能性
我有以下文字:
你可能有那个东西,不,你没有,但也许是
我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的词,在本例中为“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