首頁  >  文章  >  後端開發  >  PHP正規表示式 /i, /s, /x,/u, /U, /A, /D, /S等介紹

PHP正規表示式 /i, /s, /x,/u, /U, /A, /D, /S等介紹

零下一度
零下一度原創
2017-07-25 11:47:171864瀏覽

i (PCRE_CASELESS)

如果設定了這個修飾符模式中的字母會進行大小寫不敏感配對.

m (PCRE_MULTILINE)

預設情況下, PCRE認為目標字串是由單行字元組成的(然而實際上它可能會包含多行), "行首"元字元(^)只符合字串的開始位置#, "#"元字元($)只符合字串結尾或最後的換行符號(#除非設定了D修飾符). 這個行為和perl相同當這個修飾符設定之後, "行首""行結尾"就會在目標字串中符合任意換行符之前或之後另外#, 也分別符合目標字串的最開始和最末端位置這等於perl/m修飾符如果目標字串 #中沒有"\n"#字元 或模式中沒有出現^$, ##設定這個修飾符不產生任何影響.

s# (PCRE_DOTALL)

如果設定了這個修飾符模式中的點號元字元符合所有字元包含換行符如果沒有這個 #修飾符點號不符合換行符這個修飾符等同於perl中的/s#修飾符.一個取反字元類別例如 [^a]總是符合換行符號而不依賴這個修飾符的設定.

#x (PCRE_EXTENDED)

如果設定了這個修飾符模式中的沒有經過轉義的或不在字元類中的空白資料字元總是會被忽略並且位於一個未轉義的字元類別外部的#字元和下一個換行符號之間的字元也被忽略這個修飾符#等同於perl中的/x修飾符讓被編譯模式中可以包含註解#.  注意這只用於資料字元空白字元 還是不能在模式的特殊字元序列中出現例如序列#(?(引入了一個條件子群組(翻譯這種語法定義的 特殊字元序列中如果出現空白字元會導致編譯錯誤例如( ?(就會導致錯誤.).

(PREG_REPLACE_EVAL)

##如果這個修飾符設定了preg_replace()在進行了對替換字串的 後向引用替換之後將替換後的字串當作php#程式碼評估執行(eval函數方式), 並使用執行結果 作為實際參與替換的字串 #單引號雙引號反斜線(\)NULL字元在#後向引用替換時會被反斜線轉義#.

Tip

#請確保 #replacement參數由合法php程式碼字串組成##否則php將會 #在#preg_replace()在呼叫的行上 產生一個解釋錯誤.

Note preg_replace() #使用此修飾符其他PCRE函數忽略此修飾符.

A (PCRE_ANCHORED)

如果設定了這個修飾符模式被強制為"錨定"模式也就是說約束匹配使其只從 目標字串的開始位置搜尋這個效果同樣可以用適當的模式建構出來,並且 這也是perl種實作這種模式的唯一途徑.

D (PCRE_DOLLAR_ENDONLY)

#

如果這個修飾符被設定模式中的元字元美元符號只是符合目標字串的結尾如果這個修飾符 沒有設定當字串以換行符號結尾美元符號也會符合該換行符號(但不會符合先前的任何換行符號). 如果設定了修飾符m#這個修飾符被忽略perl中沒有與此修飾符等同的修飾符.

S

當一個模式需要多次使用的時候為了得到匹配速度的提升值得花一些時間 #對其進行一些額外的分析如果設定了這個修飾符這個額外的分析就會執行#. 目前#, #這種對一個模式的分析僅僅適用於非錨定模式的匹配(即沒有單獨的固定開始字元).

#U (PCRE_UNGREEDY)

#

這個修飾符逆轉了量詞的"貪婪#"模式使量詞預設為非貪婪的透過量詞後緊跟著?##的方式可以使其成為貪婪的這和perl是不相容的##. 它同樣可以使用 模式內修飾符設定(

?U

)來設定

或量詞後面以問號標記其非貪婪

(例如.*?##).Note#:

在非貪婪模式通常無法符合超過 pcre.backtrack_limit

#########的字元###################################################################### .##################X############# (###PCRE_EXTRA###)######

這個修飾符打開了PCREperl不相容的附件功能. 模式中的任意反斜線後就ingen一個 沒有特殊意義的字元都會導致一個錯誤以此保留這些字元以確保向後相容性預設## #情況下perl#中反斜線緊接在一個沒有特殊意義的字元被認為是該字元的原文目前沒有其他特性由這個修飾符控制.

(PCRE_INFO_JCHANGED)

內部選項設定(?J)修改本地的PCRE_DUPNAMES選項##允許子組重名. (譯註:只能透過內部選項設定外的/J設定會產生錯誤.)

#u (PCRE8)#

此修正符開啟一個與perl不相容的附加功能模式字串被視為utf-8這個修飾符  unixphp 4.1.0或更高, win32版本php 4.2.3開始可用 #. php 4.3.5開始檢視模式的utf-8合法性. This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 valternity of since sined the yed PHP 4.3.5.

以上是PHP正規表示式 /i, /s, /x,/u, /U, /A, /D, /S等介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn