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