php正規表示式貪婪模式:
比如我們要匹配以字母"a"開頭字母"b"結尾的字串,但是需要匹配的字串在"a"後面含有很多個"b",比如"a bbbbbbbbbbbbbbbbb",那正規表示式是會匹配第乙個"b"還是最後乙個"b"呢?如果你使用了貪婪模式,那麼會匹配到最後乙個"b",反之只是匹配到第乙個"b"。
php正規表示式貪婪模式使用例項:
/a.+?b//a.+b/u
對比不使用貪婪模式的例項如下:
/a.+b/
php正規表示式修飾符的種類及介紹:
i :忽略大小寫,設定i選項後,模式中的字母會進行大小寫不敏感匹配,即"a"和"a" 是一樣的。
m:多行匹配模式,m選項會更改^和$元字元的預設行為,分別與行的開頭和結尾匹配,而不是與輸入的字串的開頭和結尾匹配
s:單行模式,如果在修飾符中加入"s",那麼預設的"."代表除了換行符以外的任何字元將會變成任意字元,也就是包括換行符!
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
參考資料
正規表示式修飾符
修飾符 在正規表示式裡面的修飾符可以改變正則的很多特性,使得正規表示式更加適合你的需要 注意 修飾符對於大小寫是敏感的,這意味著 e 並不等於 e 正規表示式裡面的修飾符如下 i 如果在修飾符中加上 i 則正則將會取消大小寫敏感性,即 a 和 a 是一樣的。m 預設的正則開始 和結束 只是對於正則字...
正規表示式 修飾符
正規表示式 修飾符 標記 標記也稱為修飾符,正規表示式的標記用於指定額外的匹配策略。標記不寫在正規表示式裡,標記位於表示式之外,格式如下 pattern flags i ignore 不區分大小寫 將匹配設定為不區分大小寫,a a沒有區別 g global 全域性匹配 查詢所有的匹配項 m mult...
正規表示式修飾符
正規表示式中常用的模式修正符有i g m s u x a d e 等。它們之間可以組合搭配使用。i不區分 ignore 大小寫 例如 abc i 可以匹配 abc abc abcg全域性 global 匹配例如 var str aaaaaaaa var reg1 a str.match reg1 結...