PHP检测n个重复字符的正则表达式

时间:2017-05-19 09:22:24

标签: php regex

如何检测一对char的n次重复序列。

示例:

/(A{n})(B{n})/i 适用于AAABBBAAAAABBBBB
不适用于AABBBBAAABB

/(A{n})(BB{n})/i 适用于AABBBBAAABBBBBB
不适用于AABBBAAABB

1 个答案:

答案 0 :(得分:0)

不确定这是否是您正在寻找的但似乎有效。

https://3v4l.org/LqVVA

$input = "AABBAAABBBBBB";
preg_match_all("/A+|B+/", $input, $parts);
//var_dump($parts);

for ($i=0; $i<=count($parts[0])-1; $i++){
    if(strlen($parts[0][$i]) ==  strlen($parts[0][$i+1]) && strlen($parts[0][$i]) > 1 && strlen($parts[0][$i]) > 1){
        echo "match " . $parts[0][$i] ." " . $parts[0][$i+1]. "\n";
    }else if(strlen($parts[0][$i])*2 ==  strlen($parts[0][$i+1]) && strlen($parts[0][$i]) > 1 && strlen($parts[0][$i]) > 1){
        echo "match " . $parts[0][$i] ." " . $parts[0][$i+1]. "\n";
    }
    $i++;
}

已编辑以添加至少两个字符的请求,以匹配上述评论。

再次编辑,忘记了AABBBB比赛