使用
(a{4,})
我可以连续匹配 4 个或更多特定字符
啊啊啊啊啊啊
与
([0-9]{4,})
我可以连续匹配 4 个或更多特定字符组
1 123 1234321 12
但我正在寻找一种方法来捕捉字符串中单个字符的运行。含义:我有一个范围内的字符串集合[a-zA-z0-9]
。每当这些字符之一重复超过 4 次时,正则表达式应该匹配。
给你一个更实际的例子:在...
这是 Teeeeeeest 版本 1.0.33333.4
...它应该能够匹配e
角色的运行和角色的运行3
。
现在,以下显然不能满足我的需求......
([a-zA-Z0-9]{4,})
...因为它只会捕获允许的字符的所有运行。但我只需要捕捉单个字符重复 4 次或更多次的时刻。
我真的很想避免通过单个正则表达式使用 a 循环所有 64 个可能的字符,for(...)
并且我确信“必须有一种方法”来使用一个正则表达式来做到这一点。但是,由于我已经尝试了所有的东西,并且我的头几乎要撞到墙上,所以我选择加入,希望有人可以通过将我推向正确的方向来帮助我。
我怎样才能preg_match
运行单个字符的字符运行?(又名:正则表达式会是什么样子?)
编辑(接受答案后)
感谢您的回答和评论,因为我发现做我想做的唯一选择是
(a{4,}|b{4,}|c{4,}|d{4,}|e{4,}|f{4,}|g{4,}|h{4,}|i {4,}|j{4,}|k{4,}|l{4,}|m{4,}|n{4,}|o{4,}|p{4,}|q{4 ,}|r{4,}|s{4,}|t{4,}|u{4,}|v{4,}|w{4,}|x{4,}|y{4,} |z{4,}|A{4,}|B{4,}|C{4,}|D{4,}|E{4,}|F{4,}|G{4,}|H {4,}|I{4,}|J{4,}|K{4,}|L{4,}|M{4,}|N{4,}|O{4,}|P{4 ,}|Q{4,}|R{4,}|S{4,}|T{4,}|U{4,}|V{4,}|W{4,}|X{4,} |Y{4,}|Z{4,}|0{4,}|1{4,}|2{4,}|3{4,}|4{4,}|5{4,}|6 {4,}|7{4,}|8{4,}|9{4,})
但这感觉不太好……而且看起来也不健康,是吗?;)
反正我就这样结束了...
preg_match_all('#([a-zA-Z0-9])\1{3}#',
'This is Teeeeeeest version 1.0.33333.4',
$matches));
var_dump($matches);