【问题标题】:How can I capture phrases in regex [duplicate]如何捕获正则表达式中的短语[重复]
【发布时间】:2023-01-26 22:27:55
【问题描述】:

我有这个正则表达式 have (?=(an|the) agreement) 来查找“有一个/协议“,但我想捕捉”有协议“以及。我怎样才能实现它?

【问题讨论】:

    标签: php regex regex-group


    【解决方案1】:

    您可以制作正则表达式的中间部分选修的

    have(?: (?:an|the))? agreement
    

    Demo

    【讨论】:

      【解决方案2】:

      您的正则表达式既不匹配“有协议”也不匹配“有协议”,如果后面跟着“一个”或“该”,则只匹配“有”。

      满足您所有需求的适当正则表达式是

      have (?:(?:an|the) )?agreement
      

      你有两个非捕获组(以(?:开头):

      • 内部组(?:an|the)匹配“an”或“the”,
      • 外部(?:(?:an|the) )匹配内部组加上一个空格

      外部非捕获组本身是完全可选的,在它后面用 ? 标记,所以你也可以只是“同意”——两个词之间只有一个空格。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-18
        • 1970-01-01
        • 2017-09-13
        • 2011-03-11
        • 2017-01-07
        • 2019-12-19
        • 1970-01-01
        相关资源
        最近更新 更多