PHP正则匹配ABAB格式的词:叠词(重复连续出现的词)

一、不多说。直接上代码

  • 说明:\x{4e00}-\x{9fa5} 为汉字的范围。

  • 把正则中的第一个 1 改成 2;注意区别。

    //叠词(重复连续出现的词)
    public function repeatWords()
    {
    
    
        //定义内容数据
        $content = "艾希你你好啊,你好好啊,你真的明明好啊,眼睛亮晶晶的,请别走走停停,休息一下说道说道,漂亮的梳妆匣梳妆匣梳妆匣送给你,如沐春风如沐春风";

        //大概的格式有这几种:AAB、ABB、AABC、ABCC、AABB、ABAB、ABCABC、ABCDABCD、...以此类推...ABCDEABCDEABCDE
        //其中:AAB、ABB、AABC、ABCC、AABB 的相同点是都有2个一样的词
        //ABAB、ABCABC、ABCDABCD、ABCDEABCDEABCDE 是由 N (大于等于2)个词语重复出现

        //由此可以得到正则
        $pattern = '/([\x{4e00}-\x{9fa5}]{1,})(\\1)/u';
        $this->printResult($pattern, $content);

        //把正则中的第一个1改成2;注意区别
        $pattern = '/([\x{4e00}-\x{9fa5}]{2,})(\\1)/u';
        $this->printResult($pattern, $content);
    }

    /**
     * 打印结果
     * @param string $pattern 正则表达式
     * @param string $content 需要匹配的内容
     * @return void
     */
    public function printResult($pattern, $content)
    {
    
    
        preg_match_all($pattern, $content, $result);

        echo <<<EOF
正则 --- [ {
      
      $pattern} ]
内容:{
      
      $content}
结果:
EOF;
        var_export($result);
        echo "\n---------------------------------------------------\n\n";
    }

二、打印(查看源代码)

正则 --- [ /([\x{
    
    4e00}-\x{
    
    9fa5}]{
    
    1,})(\1)/u ]
内容:艾希你你好啊,你好好啊,你真的明明好啊,眼睛亮晶晶的,请别走走停停,休息一下说道说道,漂亮的梳妆匣梳妆匣梳妆匣送给你,如沐春风如沐春风
结果:array (
  0 => 
  array (
    0 => '你你',
    1 => '好好',
    2 => '明明',
    3 => '晶晶',
    4 => '走走',
    5 => '停停',
    6 => '说道说道',
    7 => '梳妆匣梳妆匣',
    8 => '如沐春风如沐春风',
  ),
  1 => 
  array (
    0 => '你',
    1 => '好',
    2 => '明',
    3 => '晶',
    4 => '走',
    5 => '停',
    6 => '说道',
    7 => '梳妆匣',
    8 => '如沐春风',
  ),
  2 => 
  array (
    0 => '你',
    1 => '好',
    2 => '明',
    3 => '晶',
    4 => '走',
    5 => '停',
    6 => '说道',
    7 => '梳妆匣',
    8 => '如沐春风',
  ),
)
---------------------------------------------------

正则 --- [ /([\x{
    
    4e00}-\x{
    
    9fa5}]{
    
    2,})(\1)/u ]
内容:艾希你你好啊,你好好啊,你真的明明好啊,眼睛亮晶晶的,请别走走停停,休息一下说道说道,漂亮的梳妆匣梳妆匣梳妆匣送给你,如沐春风如沐春风
结果:array (
  0 => 
  array (
    0 => '说道说道',
    1 => '梳妆匣梳妆匣',
    2 => '如沐春风如沐春风',
  ),
  1 => 
  array (
    0 => '说道',
    1 => '梳妆匣',
    2 => '如沐春风',
  ),
  2 => 
  array (
    0 => '说道',
    1 => '梳妆匣',
    2 => '如沐春风',
  ),
)
---------------------------------------------------


猜你喜欢

转载自blog.csdn.net/qq_36025814/article/details/129453911
今日推荐