gpt4 book ai didi

regex - 正则表达式只匹配最小的

转载 作者:行者123 更新时间:2023-12-04 06:57:18 25 4
gpt4 key购买 nike

我有一个类似 c.{0,2}?m 的表达式和像 "abcemtcmncefmf" 这样的字符串.目前它将匹配三个子字符串:cem , cmcefm ( see here )。但我喜欢只匹配最小的,在这种情况下,cm .

我的问题是我没有全局匹配支持,只有第一个匹配,因为我使用的是 MariaDB REGEXP_SUBSTR() 功能。我目前的解决方案是 stored procedure我为解决我的问题而创建的。但它比简单情况下的正则表达式慢 10 倍。

我也尝试做类似的事情:(cm|c.{0,1}?m|c.{0,2}?m) ,但它不起作用,因为它将匹配任何组模式中的第一个,而不是在所有主题字符串中逐一尝试。

我知道正则表达式 (PCRE) 有一些黑魔法功能,但我没有发现任何东西可以解决我的问题。

  • 备注 :我还在当前模式中使用非贪婪模式( .{0,2}? );
  • 问题 Regular expression to find smallest possible match 不要是我的问题;
  • 最佳答案

    您可以简单地在分支重置组中使用交替:

    /^(?|.*(cm)|.*(c.m)|.*(c..m))/s

    (结果在第1组)

    或者像这样:
    /^.*\Kcm|^.*\Kc.m|^.*\Kc..m/s

    第一个成功的分支获胜。

    关于regex - 正则表达式只匹配最小的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091745/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com