PHP正規表示式 修飾符

2022-07-13 07:57:09 字數 1635 閱讀 5836

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 結...