https://regex101.com/r/gNNlKM/2
我想匹配multiprocessing
,但前提是START:test:test:test:asd:xxx:yyy:zzz:12345: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,}
令牌内部。
旁注:我在这里使用匹配组,因为后来我想在特殊情况下删除数字。但这与如何获得n次比赛无关。
答案 0 :(得分:3)
您可以这样编写正则表达式,
(START(?:(?:(?!START)[^:])*:){3,})\d+(:END)
仅当:
被正确包含在字符串中4次时,此匹配。
说明:
(START
-启动捕获组并从字面上匹配START
(?:(?:(?!START)[^:])*:){3,})
-这匹配一些可选文本,并且在看到文字START
且后跟:
时拒绝匹配,其中{3,}
表示3次或更多次。\d+
-匹配一个或多个数字(:END)
-从字面上匹配另外一个:
和END
并将其捕获到group2中