假如说我要匹配找到字符串中某个字母(同一字母)重复4次子串,上面就应该有 aaaa, uuuu 两个,dddd 不算(因为重复次数多于4次)
除了 ([a-z])\1\1\1 再加上前后断言这种写法,还有没有更简洁明确的写法,因为这个重复次数是不能提前确定的
4 个解决方案
#1
[a-z]* //重复>0
或
[a-z]+ //重复>=0
或
[a-z]+ //重复>=0
#2
[a-zA-Z]{4}
#3
<?php
$str = 'aaaabbbdddddddccc12891384uuuuiii';
preg_match_all("/([a-zA-Z])\\1{3,}/s", $str, $matches);
var_export($matches);
/**
* array (
0 =>
array (
0 => 'aaaa',
1 => 'ddddddd',
2 => 'uuuu',
),
1 =>
array (
0 => 'a',
1 => 'd',
2 => 'u',
),
)
*/
?>
还有~ 1 楼说反了~囧~
#4
谢谢。我才知道原来逆向引用也是可以用量词的。给分!
#1
[a-z]* //重复>0
或
[a-z]+ //重复>=0
或
[a-z]+ //重复>=0
#2
[a-zA-Z]{4}
#3
<?php
$str = 'aaaabbbdddddddccc12891384uuuuiii';
preg_match_all("/([a-zA-Z])\\1{3,}/s", $str, $matches);
var_export($matches);
/**
* array (
0 =>
array (
0 => 'aaaa',
1 => 'ddddddd',
2 => 'uuuu',
),
1 =>
array (
0 => 'a',
1 => 'd',
2 => 'u',
),
)
*/
?>
还有~ 1 楼说反了~囧~
#4
谢谢。我才知道原来逆向引用也是可以用量词的。给分!