https://regex101.com/r/gNNlKM/2
我想比赛 START:test:test:test:asd:xxx:yyy:zzz:12345:END 但是,只有当 : 发生4次或更多。
START:test:test:test:asd:xxx:yyy:zzz:12345:END
:
一般而言,以下工程: (START.*?)\d+(:END) 但是我怎么能得到 :{4,} 进入?
(START.*?)\d+(:END)
:{4,}
匹配字符串可能会重复多次。像: START:test:test:test:asd:xxx:yyy:zzz:12345:END...START:test:test:test:asd:xxx:yyy:zzz:12345:END... 重要的是 { 4,} 匹配仅应用于每个 START-END 令牌。
START:test:test:test:asd:xxx:yyy:zzz:12345:END...START:test:test:test:asd:xxx:yyy:zzz:12345:END...
{ 4,}
START-END
旁注:我在这里使用的是匹配组,因为我想删除特殊情况下的数字。但对于如何让N次比赛进入这个问题来说,这并不重要。
你可以这样写regex,
(START(?:(?:(?!START)[^:])*:){3,})\d+(:END)
只有当 : 正好包含在字符串中4次。
说明:
(START
START
(?:(?:(?!START)[^:])*:){3,})
开始
{3,}
\d+
(:END)
END
Demo