【问题标题】:Regex - match until a group of multiple possibilities正则表达式 - 匹配直到一组多种可能性
【发布时间】:2021-04-30 05:49:39
【问题描述】:

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

我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的单词,在这个例子中是 "NO""BUT",如果string 有两个词,然后停在第一个词:

你可能有那个东西你没有但也许有
你可能有那个东西

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

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

(.*)(?:NO|BUT)

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

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

【问题讨论】:

    标签: python regex python-re


    【解决方案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 :匹配NOBUT 之一

    在线查看regex demo

    【讨论】:

    • 解释的很好,很清楚,谢谢!!
    猜你喜欢
    • 2013-12-06
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多