Regex将匹配所有事件,但只有一个事件存在时除外



我有这个示例字符串111:222:333。从中,我需要提取所有三个:分隔的数字。输出应该找到三个匹配项——111222333

我使用这个正则表达式来实现这一点:(?<=^|:)(d+)(?=:|$)

但是,只有当至少有2个匹配项时,我才需要这个正则表达式进行匹配。因此,111不应该匹配,但111,222,...应该匹配。

我不能在Java中使用标准的split函数,因为我的用例要求从数据库中动态读取正则表达式。

如何强制执行"至少两场比赛"条件?

您可以使用

(?<=G(?!^):|^(?=d+(?::d+)+$))d+

查看regex演示

详细信息

  • (?<=G(?!^):|^(?=d+(?::d+)+$))-与字符串中的两个备选位置之一匹配的正向查找:
    • G(?!^):-上一场成功比赛和:之后的位置
    • |-或
    • ^(?=d+(?::d+)+$))-后面跟有1+位数字的字符串的开头,然后是一个或多个:和1+位序列,直到字符串结尾
  • d+-消耗1个或多个数字

相关内容

最新更新