1. 程式人生 > >正則表示式解決結巴字串

正則表示式解決結巴字串

有以下一個比較有趣的問題:

我們有一個字串:你是是不不不是是想想想出出出去去玩玩啊啊啊

上面這一個字串,好像是一個有口吃的人在說話。

我們需要把這句話整理成:你是不是想出去玩啊

思考一下該怎麼去實現。

  ↓

  ↓

  ↓

  ↓

思考的怎麼樣了?下面我給出我的解決方案:

方案:

利用正則表示式解決(會用到反向引用的概念,不懂正則反向引用的可以去百度瞭解一下)

以下是程式碼:

//利用正則解決結巴字串

<?php

$str = "你是是不不不是是想想想出出出去去玩玩啊啊啊";
$reg = '/([\x{4e00}-\x{9fa5}])\1/iu'; //其中最後的u表示字元編碼遵循utf8規範 \1表示反向引用第一個子表示式 [\x{4e00}-\x{9fa5}]表示中文字元編碼區段
preg_match_all($reg,$str,$res);
var_dump($res); //可以列印看一下$res是什麼
$resstr = implode('',$res[1]);        //php陣列轉化為字串的方法,以空字串為分隔。
echo '<hr>';
echo $resstr;

?>

執行以上程式碼會得到以下結果:

這樣就解決了上面的結巴字串問題。

這只是一個思路,解決問題的方法很多,大家也可以通過其它的方式去實現這一效果。