https://regex101.com/r/gNNlKM/2
我想匹配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,}
比赛仅各START-END
单词内应用。
旁注:我使用的是匹配的组这里我lateron要删除的数字在这种特殊情况。但是,这不应该的问题的问题,如何获得n次比赛之中。
你可以写你的正则表达式这样的,
(START(?:(?:(?!START)[^:])*:){3,})\d+(:END)
如果:
包含字符串正好是4倍,这将只匹配。
说明:
(START
- 启动捕获组和字面匹配START
(?:(?:(?!START)[^:])*:){3,})
- 这符合一些可选的文本,并拒绝如果看到文字START
和随后:
比赛,其中{3,}
指三次以上。\d+
- 匹配一个或多个数字(:END)
- 匹配一个更:
和END
字面上并捕获它在第2组