Regex的子模式詳解,Regex詳解_PHP教程

來源:互聯網
上載者:User

Regex的子模式詳解,Regex詳解


首先,我們先看一段PHP代碼:

php    $time = date ("Y-m-d H:i:s");    $pattern = "/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/i";     if(preg_match($pattern,$time,$arr)){    echo "
";    print_r($arr);            echo "
"; }?>

顯示結果:

Array(    [0] => 2012-06-23 03:08:45)

有沒有注意到,顯示的結果只有一條資料,即符合匹配模式的時間格式,那如果只有一條記錄的話,為什麼還要用數組儲存呢?直接使用字串儲存不是更好?

帶著這個問題,我們來看下Regex中的子模式。

在Regex中,可以使用“(”和“)”將模式中的子字串括起來,以形成一個子模式。將子模式視為一個整體時,那麼它就相當於一個單個字元。

比如,我們將以上的代碼稍微修改下,改成如下:

php    $time = date ("Y-m-d H:i:s");    $pattern = "/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/i";     if(preg_match($pattern,$time,$arr)){    echo "
";    print_r($arr);            echo "
"; }?>

注意:我只修改了$pattern,在匹配模式中,使用了括弧()

執行結果:

Array(    [0] => 2012-06-23 03:19:23    [1] => 2012    [2] => 06    [3] => 23    [4] => 03    [5] => 19    [6] => 23)
總結:我們可以使用小括弧給整個匹配模式進行分組,預設情況下,每個分組會自動擁有一個組號,規則是,從左至右,以分組的左括弧為標誌,第一個出現的分組為組號1,第二個為組號2,以此類推。其中,分組0對應整個Regex。
對整個正則匹配模式進行了分組以後,就可以進一步使用“反向參考”來重複搜尋前面的某個分組匹配的文本。例如:\1代表分組1匹配的文本,\2代表分組2匹配的文本等等
我們可以進一步修改下代碼,如下所示:
php    $time = date ("Y-m-d H:i:s");    $pattern = "/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/i";    $replacement = "\$time格式為:$0
替換後的格式為:\\1年\\2月\\3日 \\4時\\5分\\6秒"; print preg_replace($pattern, $replacement, $time); if(preg_match($pattern,$time,$arr)){ echo "
";        print_r($arr);                echo "
"; }?>

注意:

執行結果:

$time格式為:2012-06-23 03:30:31替換後的格式為:2012年06月23日 03時30分31秒Array(    [0] => 2012-06-23 03:30:31    [1] => 2012    [2] => 06    [3] => 23    [4] => 03    [5] => 30    [6] => 31)



http://www.bkjia.com/PHPjc/1121568.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1121568.htmlTechArticleRegex的子模式詳解,Regex詳解 首先,我們先看一段PHP代碼: ? php $time = date ("Y-m-d H:i:s" ); $pattern = "/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.