https://regex101.com/r/gnnlkm/2
我想要匹配 START:test:test:test:asd::yyy:zzz:12345:END
,但前提是 :
发生4次或更多次。
一般来说,以下工作: (START.*?)\d+(:END)
但我怎样才能 :{4,}
进入?
匹配的字符串可能会重复多次。比如: START:test:test:test:asd::yyy:zzz:12345:END...START:test:test:test:asd::yyy:zzz:12345:END...
重要的是 :{4,}
匹配只应用于每个 START-END
代币。
旁注:我在这里使用匹配组,因为我稍后想删除那个特殊情况下的数字。但这对于如何让n次比赛进入决赛并不重要。
1条答案
按热度按时间ca1c2owp1#
你可以这样写正则表达式,
只有在
:
正好包含在字符串中4次。说明:
(START
-启动捕获组并匹配START
真的吗(?:(?:(?!START)[^:])*:){3,})
-这将匹配一些可选文本,如果看到文本,则拒绝匹配START
然后是:
哪里{3,}
指三次或三次以上。\d+
-匹配一个或多个数字(:END)
-再匹配一个:
以及END
并在第2组中捕获演示