正则表达式 - 匹配直到一组多种可能性
Regex - match until a group of multiple possibilities
我有以下文字:
你可能有那个东西不你没有但也许有
我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的单词,"NO" 和 "BUT" 在此示例中,如果字符串包含两个单词,则停在第一个:
你可能有那个东西没有你没有但是也许有
你可能有那个东西
你可能有你没有的东西但是也许有
你可能有你没有的东西
我正在尝试下面的正则表达式,但问题是它在 BUT 处停止,即使它有 NO:
(.*)(?:NO|BUT)
上述正则表达式的匹配示例,粗体为完整匹配,斜体为第 1 组:
你可能有你没有的东西但是也许有
我的期望:
你可能有那个东西没有你没有但是也许有
让我们修复您的正则表达式模式
^(.*?)\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
我有以下文字:
你可能有那个东西不你没有但也许有
我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的单词,"NO" 和 "BUT" 在此示例中,如果字符串包含两个单词,则停在第一个:
你可能有那个东西没有你没有但是也许有
你可能有那个东西
你可能有你没有的东西但是也许有
你可能有你没有的东西
我正在尝试下面的正则表达式,但问题是它在 BUT 处停止,即使它有 NO:
(.*)(?:NO|BUT)
上述正则表达式的匹配示例,粗体为完整匹配,斜体为第 1 组:
你可能有你没有的东西但是也许有
我的期望:
你可能有那个东西没有你没有但是也许有
让我们修复您的正则表达式模式
^(.*?)\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