php pcreRegex完全教程(1/3)

來源:互聯網
上載者:User

php教程 pcreRegex完全教程
預定義常量

preg_pattern_order

結果按照”規則”排序, 僅用於preg_match_all, 即$matches[0]是完整規則的匹配結果, $matches[1]是第一個子組匹配的結果
preg_set_order:

結果按照”集合”排序, 僅用於preg_match_all, 即$matches[0]儲存第一次匹配結果的所有結果(包含子組)資訊, $matches[1]儲存第二次的結果資訊
preg_offset_capture

在捕獲的結果中, 不僅包含結果子串, 還會包含子串在原字串中的位置.
preg_split_no_empty

告知preg_split僅返回非空的部分
preg_split_delim_capture

告知preg_split同時捕獲規則中的括號運算式匹配到的內容
preg_split_offset_capture

如果設定了這個標記, 每次匹配得到的結果的offset位置將會被同時返回.
preg_no_error

如果preg_last_error調用後返回此值, 則表明正則沒有錯誤
preg_internal_error

如果preg_last_error調用後返回此值, 則表明發生了pcre內部錯誤
preg_backtrack_limit_error

如果回溯次數超過預設的值, preg_last_error函數返回此值
preg_recursion_limit_error

如果遞迴次數超過預設的值, preg_last_error函數返回此值
preg_bad_utf8_error

如果preg的最後錯誤是由於異常的utf-8資料(僅在運行在utf-8模式Regex情況下)導致的, 那麼preg_last_error返回此值
 

preg_bad_utf8_offset_error

如果位移量與合法的utf-8代碼(僅在運行在utf-8模式Regex情況下)的開始點不匹配, preg_last_error的調用返回此值
pcre_version

返回pcre版本號碼和發布日期.

模式修飾符

i        pcre_classes
大小寫不敏感的修飾符
m      pcre_multiline
多行匹配, 預設情況下, pcre認為目標字串是一組單行字元組成的(然而實際上它可能會包含多行). 元字元^僅匹配字串的開始位置, 而元字元$則僅匹配字串的末尾, 或者新行之前(除非設定了d修飾符). 這個修飾符和perl中工作一直, 使用後, ^和$會匹配每一行的開始和結尾
如果目標字串中沒有n字元或者模式中沒有出現^和$, 則設定此修飾符是沒有任何影響的.
s       pcre_dotall
用來增強字元類.(點號)的功能, 預設情況下, 點號匹配任一字元, 但不包括分行符號及以後內容. 使用此修飾符後, 可以匹配任一字元包括分行符號
x       pcre_extended
如果設定了這個修飾符, 模式中的空白字元, 除非被轉義或者在一個字元類中, 否則都被忽略. 在一個未轉義的#之後直到下一個分行符號之間的內容都會被Regex引擎忽略以方便添加註釋.
e       preg_replace_eval
使用此修飾符後, preg_replace的$replacement參數除了可以使用正常的反向引用來取得匹配值, 還可以在其中書寫eval文法允許的字串進行求值, 並將返回結果用於最終的替換.
a       pcre_anchored
如果設定了此修飾符, 模式被強製成為”anchored”(錨點), 也就是說約束使其始終從字串的嘴前面開始搜尋. 這個影響也可以通過構造適當的規則來實現(perl中只能這樣實現)
d      pcre_dollar_endonly
如果設定了這個修飾符, $會匹配目標字串的結尾之前, 而如果沒有設定這個修飾符, 如果目標字串最後一個字元時分行符號, $就會匹配該分行符號之前而不是字串結尾之前.
如果設定了m修飾符, 則這個修飾符會被忽略. 這一點和perl不一致
s
當一個模式需要多次使用的時候, 我們為了獲得更高的匹配效率, 值得花費一些時間對其進行分析. 如果設定了這個修飾符, 將會進行這個額外的分析. 當前, 這種對一個模式的分析僅僅適用於非錨點的匹配(即沒有一個單一固定的開始字元)
u      pcre_ungreedy
這個修飾符逆轉了貪婪的模式, 如果沒有這個設定, 預設情況下的正則匹配時貪婪的, 量詞後增加了?的模式是非貪婪的, 但是如果設定了這個修飾符, 則剛好相反.
這個規則與perl是不相容的.
也可以在模式中使用?u來達到同樣的效果
x       pcre_extra
這個修飾符啟用了一個pcre中與perl不相容的額外功能. 任意反斜線後面跟一個沒有特殊含義的字元會導致一個錯誤, 以此來保留這些組合以備後期擴充.
預設情況下, 和perl一樣, 反斜線後跟一個沒有特殊含義的字元會以該字元原意解釋.
當前沒有任何其他特性受此修飾符控制
j        pcre_info_jchanged
與內部選項?j相同, 用來改變本地pcre_dupnames選項. 允許子組有重複的名字
u       pcre8
這個修飾符開啟一個pcre中與perl不相容的額外功能. 模式字串被認為是utf-8的.

首頁 1 2 3 末頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.