咱們在PHP正則表達式的學習中會碰到修飾符,那麼關於PHP正則表達式修飾符的理解以及使用咱們須要注意什麼呢?那麼咱們來具體的看看它的概念以及相關內容。在學習PHP正則表達式修飾符以前先來理解下貪婪模式,前面在元字符中提到過"?"還有一個重要的做用,即"貪婪模式",什麼是"貪婪模式"呢?php
PHP正則表達式貪婪模式:html
好比咱們要匹配以字母"a"開頭字母"b"結尾的字符串,可是須要匹配的字符串在"a"後面含有不少個"b",好比"a bbbbbbbbbbbbbbbbb",那正則表達式是會匹配第一個"b"仍是最後一個"b"呢?若是你使用了貪婪模式,那麼會匹配到最後一個"b",反之只是匹配到第一個"b"。正則表達式
PHP正則表達式貪婪模式使用實例:學習
/a.+?b/ /a.+b/U
對比不使用貪婪模式的實例以下:spa
/a.+b/
PHP正則表達式修飾符的種類及介紹:code
i :忽略大小寫,設置i選項後,模式中的字母會進行大小寫不敏感匹配,即"a"和"A" 是同樣的。htm
m:多行匹配模式,m選項會更改^和$元字符的默認行爲,分別與行的開頭和結尾匹配,而不是與輸入的字符串的開頭和結尾匹配blog
s:單行模式,若是在修飾符中加入"s",那麼默認的"."表明除了換行符之外的任何字符將會變成任意字符,也就是包括換行符!ip
x:若是加上該修飾符,正則表達式中的「空白字符」和「換行符」將會被忽略,除非它已經被轉義,同時#號(#)被解釋爲註釋的開頭字符串
U:和問號的做用差很少,用於設置"貪婪模式"。
示例代碼
<?php //非貪婪模式 $s = "abbb"; preg_match_all("/a.*b/",$s,$m); var_dump($m); //abbb //貪婪模式 //做爲量詞,表示 0 次或 1 次匹配。位於量詞後面用於改變量詞的貪婪特性 $s = "abbb"; preg_match_all("/a.*?b/",$s,$m); var_dump($m); //ab $s = "abbb"; preg_match_all("/a.*b/U",$s,$m); var_dump($m); //ab //單行模式 $s = "Single line description"; preg_match_all("/^S/s",$s,$m); var_dump($m); //S //多行模式 $s = "First line\nSecond line"; preg_match_all("/^S/m",$s,$m); var_dump($m); //S $s = "First line Second line"; preg_match_all("/^S/m",$s,$m); var_dump($m); //S //忽略正則表達式中的「非轉義的空白字符」和「回車換號符」 $p = "abc #category code\n123 #item number"; $s = "abc123"; preg_match_all("/".$p."/x",$s,$m); var_dump($m); //abc123,至關於匹配abc123
參考資料
http://www.360doc.com/content/10/0921/10/930254_55292179.shtml