首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 正則表達式模式修飾符完整指南

     編輯:PHP 相關知識

什麼是模式修飾符?

在 PHP 的正則表達式中,模式修飾符用於改變正則引擎的匹配行為。它們通常放在正則表達式的結束分隔符之後,例如 /pattern/i 中的 i。某些修飾符也可以通過 (?modifier) 語法直接寫在表達式內部,實現局部生效。

常用修飾符對照表

修飾符 內部寫法 說明
i(?i)忽略大小寫匹配
m(?m)增強行錨點模式(^ 和 $ 匹配每一行的開頭和結尾)
s(?s)點號通配模式(. 可以匹配換行符)
x(?x)寬鬆排列與註釋模式(忽略空白,允許 # 註釋)
u—以 UTF-8 模式解析正則與目標字串
X(?X)啟用 PCRE 額外功能(更嚴格的錯誤檢查)
e—將 replacement 視為 PHP 代碼執行(僅用於 preg_replace,已棄用)
S—啟用 PCRE study 優化(適合重複使用的複雜模式)

較少使用的修飾符

修飾符 內部寫法 說明
U(?U)反轉貪婪與非貪婪量詞的預設行為(* 變非貪婪,*? 變貪婪)
A—強制匹配必須從字串開頭開始(相當於 ^)
D—$ 僅匹配字串絕對結尾(EOS),不匹配結尾前的換行符(若使用 m 則無效)

表達式內部的修飾符用法

在正則內部,修飾符可以單獨出現以啟用或停用特性:

  • (?i) — 開啟不區分大小寫
  • (?-i) — 關閉不區分大小寫
  • 作用範圍持續到對應的右括號,若無括號則持續到表達式末尾。

也可以限定作用範圍:

  • (?i:...) — 僅對括號內內容不區分大小寫
  • (?-sm:...) — 在此範圍內關閉 s 和 m 模式

外部修飾符的組合

結束分隔符後的修飾符可任意順序組合。例如:

if (preg_match('{<title>(.*?)</title>}si', $html, $captures))

上例中 si 同時啟用了「忽略大小寫」與「點號匹配換行」。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved