如何preg_match个别字符的字符运行?

时间:2013-08-05 05:07:54

标签: php regex character

使用

(a{4,})

我可以连续匹配4个或更多特定字符

  

aaa aaaaaa aa

([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次或更多次的时刻。

我真的想避免循环通过个人的正则表达式所有64个可能的字符有for(...),我敢肯定有“绝人之路” 的同一个正则表达式做。但是因为我已经尝试了所有的东西而我接近撞到了墙上,所以我选择希望有人可以通过推动我朝着正确的方向帮助我。

我如何preg_match个性角色的角色扮演? (又名:正则表达式是什么样的?)

编辑(接受回答后)

感谢您的回答和评论,因为我发现做我想做的唯一选择是

  

(一个{4} | B {4} | C {4,} | d {4,} | E {4} | F {4,} | G {4,} | H {4, } | I {4} |百灵{4,} | K {4,} |升{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} |百灵{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);

1 个答案:

答案 0 :(得分:4)

您需要使用正则表达式“反向引用”功能。在你的情况下,它将是:

([a-zA-Z0-9])\1{3}

使用您的测试字符串查看此fiddle