PHP有兩種使用不同的方式來使用正則表達式:PCRE(Perl兼容表示法,preg_*)函數 和 POSIX(POSIX 擴展表示法,ereg_*) 函數。幸運的是,POSIX 家族函數從 PHP 5.3.0 開始就被棄用了。
經常使用的分隔符是正斜線(/)、hash符號(#) 以及取反符號(~)。下面的例子都是使用合法分隔符的模式
/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
{this is a pattern}
可以在結束分隔符後面增加模式修飾符
一些字符被賦予 特殊的涵義,使其不再單純的代表自己,模式中的這種有特殊涵義的編碼字符 稱為 元字符
。
模式中方括號內的部分稱為“字符類”。 在一個字符類中僅有以下可用元字符
方括號中的內容就是字符類
有一些預定義字符類
如abc
如
簡單的斷言代碼有、B、 A、 Z、z、 ^、$
從當前位置向前測試
(?=)
(?!)
w+(?=;)
匹配一個單詞緊跟著一個分號但是匹配結果不會包含分號
從當前位置向後測試
(?<=)
(?
(?用於查找任何前面不是 ”foo” 的 ”bar”
模式修飾符
模式修飾符
U
這個修飾符逆轉了量詞的”貪婪”模式,使量詞默認為非貪婪的
i
大小寫不敏感匹配
x
忽略空白
s
點號元字符匹配所有字符,包含換行符。如果沒有這個修飾符,點號不匹配換行符
…
PCRE 函數
preg_filter — 執行一個正則表達式搜索和替換
preg_grep — 返回匹配模式的數組條目
preg_last_error — 返回最後一個PCRE正則執行產生的錯誤代碼
preg_match_all — 執行一個全局正則表達式匹配
preg_match — 執行一個正則表達式匹配
preg_quote — 轉義正則表達式字符
preg_replace_callback_array — Perform a regular expression search and replace using callbacks
preg_replace_callback — 執行一個正則表達式搜索並且使用一個回調進行替換
preg_replace — 執行一個正則表達式的搜索和替換
preg_split — 通過一個正則表達式分隔字符串