一、PHP 正規表達式速查表
字元 | 描述 |
---|---|
^ | 字串的開始位置。^也比對「\n」或「\r」之後的位置。 |
$ | 字串的結束位置。$也比對「\n」或「\r」之前的位置。 |
* | 比對字串表達式零次或多次。例如,eto*能比對「et」、「eto」以及「etoo」。 |
+ | 比對字串表達式一次或多次。例如,「eto+」能比對「eto」以及「etoo」,但不能比對「et」。 |
? | 比對字串表達式零次或一次。例如,「do(es)?」可以比對「does」中的「do」和「does」。 |
{n} | n是一個非負整數。比對確定的n次。例如,「o{2}」指在字串出現二字「o」。例如「food」中的兩個o。 |
{n,} |
n是一個非負整數。至少比對n次。例如,「o{2,}」指在字串出現二字「o」以上。例如「foooood」中的所有o。 例如:指在字串出現一字「o」以上。有相同使用方法如「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。 |
{n,m} | m和n均為非負整數,其中n<=m。最少比對n次且最多比對m次。例如,「o{1,3}」將比對「fooooood」中的前三個o。 |
? | 比對前一個字元0次或1次 |
. | 比對除「\r」「\n」之外的任何單個字元。要比對包括「\r」「\n」在內的任何字元,請使用像「(.|\r|\n)」的模式。 |
(pattern) | 比對pattern並取得這一比對的子字串。 |
(?:pattern) |
比對pattern但不取得比對的子字串。在使用或字元「(|)」來組合一個模式的各個部分是很有用。 例如:「h(?:y|ies)」就是一個比「hy|hies」更簡略的表達式。 |
(?=pattern) |
正向肯定查詢在任何比對pattern的字串開始處比對尋找字串。 例如:「Windows(?=95|98|NT|2000)」能比對「Windows2000」中的「Windows」,但不能比對「Windows3.1」中的「Windows」。 |
(?!pattern) |
正向否定查詢(negative assert),在任何不比對pattern的字串開始處比對尋找字串。這 例如:「Windows(?!95|98|NT|2000)」能比對「Windows3.1」中的「Windows」,但不能比對「Windows2000」中的「Windows」。 |
(?<=pattern) |
反向肯定查詢與正向肯定預查類似,只是方向相反。例 例如:「(?<=95|98|NT|2000)Windows」能比對「2000Windows」中的「Windows」,但不能比對「3.1Windows」中的「Windows」。 |
(?<!pattern) |
反向否定查詢,與正向否定預查類似,只是方向相反。例 例如:「(?<!95|98|NT|2000)Windows」能比對「3.1Windows」中的「Windows」,但不能比對「2000Windows」中的「Windows」。 |
x|y |
沒有包圍在()里,其範圍是整個正規表示式。 例如:「z|food」能比對「z」或「food」。「(?:z|f)ood」則比對「zood」或「food」。 |
[xyz] | 字元集合(character class)。 |
[^xyz] | 排除字元集合(negated character classes)。 |
[a-z] | 字元範圍。在「a」到「z」範圍內的任意小寫字母字元。 |
[^a-z] | 排除字元範圍。不在「a」到「z」範圍內的任意字元。 |
\b |
比對單詞邊界,指單詞和空格間的位置。指後面要空格。 例如:「er\b」可比對「never」中的「er」,但不能比對「verb」中的「er」。 |
\B |
比對非單詞邊界。 例如:「er\B」能比對「verb」中的「er」,但不能比對「never」中的「er」。 |
\cx |
x指明的控制字元。x的值必須為A-Z或a-z之一。 否則,將c視為一個原義的「c」字元。控制字元的值等於x的值最低5位元(即對3210進位的餘數)。例 如,\cM比對一個Control-M或回車字元。\ca等效於\u0001, \cb等效於\u0002, 等等… |
\d | 比對一個數字字元。等價於[0-9]。 |
\D | 比對一個非數字字元。等價於[^0-9]。 |
\f | 換頁符。等價於\x0c和\cL。 |
\n | 換行符。等價於\x0a和\cJ。 |
\r | 比對一個回車字元。等價於\x0d和\cM。 |
\s |
比對任何空白字元,包括空格、制表符、換頁符等等。等價於[ \f\n\r\t\v]。 注意Unicode正規表示式會比對全形空格符。 |
\S | 比對任何非空白字元。等價於[^ \f\n\r\t\v]。 |
\t | 比對一個制表符。等價於\x09和\cI。 |
\v | 比對一個垂直制表符。等價於\x0b和\cK。 |
\w |
比對包括底線的任何單詞字元。等價於「[A-Za-z0-9_]」。 注意Unicode正規表示式會比對中文字元。 |
\W | 比對任何非單詞字元。等價於「[^A-Za-z0-9_]」。 |
\xnn |
十六進位跳脫字元序列。比對兩個十六進位數字nn表示的字元。 例如,「\x41」比對「A」。「\x041」則等價於「\x04&1」。正規表達式中可以使用ASCII編碼。. |
\num | 對捕獲組的反向引用。其中 num 是一個正整數。對所獲取的比對的引用。例如,“(.)\1”匹配兩個連續的相同字元。 |
\n |
標識一個八進位跳脫值或一個向後參照。如果\n之前至少n個取得的子表達式,則n為向後參照。否則,如果n為八進位數字(0-7),則n為一個八進位跳脫值。 |
\nm | 3位八進位數字,標識一個八進位跳脫值或一個向後參照。如果\nm之前至少有nm個獲得子表達式,則nm為向後參照。如果\nm之前至少有n個取得,則n為一個後跟文字m的向後參照。如果前面的條件都不滿足,若n和m均為八進位數字(0-7),則\nm將比對八進位跳脫值nm。 |
\nml | 如果n為八進位數字(0-3),且m和l均為八進位數字(0-7),則比對八進位跳脫值nml。 |
\un | Unicode跳脫字元序列。其中n是一個用四個十六進位數字表示的Unicode字元。例如,\u00A9比對著作權符號(©)。 |
二、PCRE 常用處理涵式
preg_filter :執行一個正則表達式搜索和替換
preg_grep :返回匹配模式的數組條目
preg_last_error :返回最後一個PCRE正則執行產生的錯誤代碼
preg_match_all :執行一個全局正則表達式匹配
preg_match :執行匹配正則表達式
preg_quote :轉義正則表達式字符
preg_replace_callback_array :執行正則表達式搜索並使用回調進行替換
preg_replace_callback :執行一個正則表達式搜索並且使用一個回調進行替換
preg_replace :執行一個正則表達式的搜索和替換
preg_split :通過一個正則表達式分隔字符串
三、PREG 常量
常量 | 描述 |
---|---|
PREG_PATTERN_ORDER |
結果按照”規則”排序,僅用於preg_match_all()。 $text[0]是完整規則,$text[1]是第一個子組匹配的值。 |
PREG_SET_ORDER |
結果按照”集合”排序,僅用於preg_match_all()。 即$text [0]保存第一次結果的所有結果(包含子組)信息, $text[1]保存第二次的結果信息。 |
PREG_OFFSET_CAPTURE | 查看 PREG_SPLIT_OFFSET_CAPTURE 的描述。 |
PREG_SPLIT_NO_EMPTY | 告訴 preg_split() 僅返回非空部分。 |
PREG_SPLIT_DELIM_CAPTURE | 告訴 preg_split() 同時捕獲括號表達式匹配到的內容。 |
PREG_SPLIT_OFFSET_CAPTURE |
只能用於preg_split()。 如果設置了這個標記,每次出現的匹配子串的偏移量也會被返回。注意,這會改變返回數組中的值,每個元素都是由匹配子串作為第0個元素,它相對目標字符串的偏移量作為第1個元素的數組。 |
PREG_NO_ERROR | 沒有匹配錯誤時調用 preg_last_error() 返回。 |
PREG_INTERNAL_ERROR | 如果有PCRE內部錯誤時調用 preg_last_error() 返回。 |
PREG_BACKTRACK_LIMIT_ERROR | 如果調用回溯限制超出,調用 preg_last_error() 時返回。 |
PREG_RECURSION_LIMIT_ERROR | 如果遞歸限制超出,調用 preg_last_error() 時返回。 |
PREG_BAD_UTF8_ERROR | 如果最後一個錯誤時由於異常的utf-8數據(僅在運行在 UTF-8模式正則表達式下可用)。導致的,調用preg_last_error()返回。 |
PREG_BAD_UTF8_OFFSET_ERROR | 如果偏移量與合法的urf-8代碼不匹配(僅在運行在 UTF-8模式正則表達式下可用)。調用preg_last_error()返回。 |
PREG_JIT_STACKLIMIT_ERROR | 當PCRE函數因JIT棧空間限製而失敗,preg_last_error()就會返回此常量。 |
PCRE_VERSION | PCRE版本號和發布日期(如: " 7.0 19-Dec-2007 ")。 |
來源:https://www.php.net/manual/zh/book.pcre.php
留言列表