我有这个示例字符串111:222:333
。从中,我需要提取所有三个:
分隔的数字。输出应该找到三个匹配项——111
、222
和333
。
我使用这个正则表达式来实现这一点:(?<=^|:)(d+)(?=:|$)
。
但是,只有当至少有2个匹配项时,我才需要这个正则表达式进行匹配。因此,111
不应该匹配,但111,222,...
应该匹配。
我不能在Java中使用标准的split函数,因为我的用例要求从数据库中动态读取正则表达式。
如何强制执行"至少两场比赛"条件?
您可以使用
(?<=G(?!^):|^(?=d+(?::d+)+$))d+
查看regex演示
详细信息
(?<=G(?!^):|^(?=d+(?::d+)+$))
-与字符串中的两个备选位置之一匹配的正向查找:G(?!^):
-上一场成功比赛和:
之后的位置|
-或^(?=d+(?::d+)+$))
-后面跟有1+位数字的字符串的开头,然后是一个或多个:
和1+位序列,直到字符串结尾
d+
-消耗1个或多个数字