Pattern Modifiers - 規(guī)則表達(dá)式的修飾符
下面是當(dāng)前規(guī)則表達(dá)式里可用的修飾. 括號(hào)內(nèi)的名字是那些修飾符的內(nèi)部 PCRE 名字.
i (PCRE_CASELESS) 如果設(shè)置了這個(gè)修飾符, 則表達(dá)式不區(qū)分大小寫.
m (PCRE_MULTILINE) 默認(rèn)的, PCRE 認(rèn)為目標(biāo)字符串值是單行字符串 (即使他確實(shí)包含多行). 行開(kāi)始標(biāo)記 (^) 只匹配字符串的開(kāi)始部分, 而行結(jié)束標(biāo)記 ($) 只匹配字符串的尾部,或者一個(gè)結(jié)束行(除非指定 E 修飾符). 這個(gè)和 Perl 里面一樣.
如果設(shè)定了這個(gè)修飾符, 行開(kāi)始和行結(jié)束結(jié)構(gòu)分別匹配在目標(biāo)字符串任何新行的當(dāng)前位置后面的或者以前的, 和每一個(gè)開(kāi)始和結(jié)束一樣. 這個(gè)等于 Perl 里面的 /m 修飾符. 如果目標(biāo)字符串沒(méi)有 "n" 字符, 或者模式里沒(méi)有 ^ 或 $ ,這個(gè)修飾符不起作用.
s (PCRE_DOTALL) 如果設(shè)置這個(gè)修飾符, 模式里的一個(gè)"點(diǎn)"將匹配所有字符, 包括換行. 沒(méi)有他, 換行將被排除在外. 這個(gè)修飾符等同于 Perl 里面的 /s 修飾符. 一個(gè)相反的類型,例如 [^a] 將總是匹配換行字符,而不管這個(gè)修飾符的限制.
x (PCRE_EXTENDED) 如果設(shè)置這個(gè)修飾符, 模式里面的空格數(shù)句將會(huì)被全部忽略,除非用轉(zhuǎn)義符或者一個(gè)字符的內(nèi)部類型,還有所有字符類型外的未轉(zhuǎn)義的 # 號(hào)之間的也被忽略. 這個(gè)等同于 Perl 里面的 /x 修飾符, 這樣可以復(fù)雜的模式里面加入注釋. 注意,只適用于數(shù)據(jù)字符. 空格字符將不會(huì)在指定的模式字符指定順序中出現(xiàn)。
e 如果設(shè)置這個(gè)修飾符, preg_replace() 將在替換值里進(jìn)行正常的涉及到 \ 的替換, 等同于在 PHP 代碼里面一樣, 然后用于替換搜索到的字符串.
只在 preg_replace() 里使用這個(gè)修飾符; 其它 PCRE 函數(shù)忽略他.
A (PCRE_ANCHORED) 如果設(shè)置這個(gè)修飾符, 模式被強(qiáng)制為錨(anchored), 也就是說(shuō), 他將值匹配搜索字符串的開(kāi)始. 這個(gè)效果可以通過(guò)恰當(dāng)?shù)哪J浇Y(jié)構(gòu)自身來(lái)實(shí)現(xiàn),那是在 Perl 里面的唯一途徑.
D (PCRE_DOLLAR_ENDONLY) 如果設(shè)置這個(gè)修飾符,則模式里的 $ 修飾符將僅匹配目標(biāo)字符串里的尾部. 沒(méi)有這個(gè)修飾符, $ 字符也匹配新行的尾部 (但是不再新行的前面). 如果設(shè)置了 m 修飾符則忽略這個(gè)修飾符. 在 Perl 里面沒(méi)有類似的.
S 如果一個(gè)模式將被使用多次, 使用長(zhǎng)些時(shí)間分析他來(lái)來(lái)提高匹配的速度. 如果使用這個(gè)修飾符,則進(jìn)行額外的分析. 目前, 研究模式僅用于非錨模式,沒(méi)有一個(gè)固定的開(kāi)始字符.
U (PCRE_UNGREEDY) 這個(gè)修飾符翻轉(zhuǎn)數(shù)量的 "greediness" ,使得默認(rèn)不被 greedy,但是如果你緊跟問(wèn)號(hào)(?),則可以 greedy. 這個(gè)和 Perl 不兼容. 這個(gè)也可以通過(guò)在模式里面的(?U) 修飾符得到.
X (PCRE_EXTRA) 這個(gè)修飾符打開(kāi)額外的功能,這些和 Perl 不兼容. 任何模式里面的后面帶字符但沒(méi)有特殊意義的反斜杠將引起錯(cuò)誤, 從而儲(chǔ)備這些聯(lián)合用于將來(lái)的擴(kuò)充. 默認(rèn)的, 在 Perl 里面, 反斜杠后面有無(wú)意義的字符被當(dāng)成正常的 literal. 目前還沒(méi)有其他的控制特征
|