Perl風格的正則表達式允許把單個字符選項(標志)放在正則表達式模式後面來修改匹配的解釋或行為。例如,要進行不區分大小寫的匹配,可以簡單地使用i標志:
preg_match('/cat/i', 'Stop, Catherine!'); // returns true返回true
表4-12顯示了在Perl兼容正則表達式中支持的來自Perl的修飾符:
表4-12:Perl標志
修飾符
意 義
/regexp/i
不區分大小寫的匹配
/regexp/s
使句點(.)匹配任何字符,包括換行符(\n)
/regexp/x
從模式中刪除空白符和注釋
/regexp/m
使^匹配換行符 (\n)之後的內容,美元符號($)匹配換行符 (\n)之前的內容
/regexp/e
如果替換字符串是PHP代碼,使用eval()執行該代碼來得到實際的替換字符串。
PHP的Perl兼容正則表達式函數也支持在Perl中不支持的其他修飾符,如表4-13所示:
表4-13:其他的PHP標志
修飾符
意 義
/regexp/U
顛倒子模式的貪婪性;*和+盡可能少地匹配而不是盡可能多。
/regexp/u
把模式字符串當作UTF-8編碼對待
/regexp/X
如果一個反斜槓之後跟著沒有特殊意義的字符,將產生一個錯誤
/regexp/A
把錨定位在字符串的開頭就像模式中有^一樣
/regexp/D
使$字符僅匹配一行的末尾
/regexp/S
使表達式解析器更加小心地檢查模式的結構,使得第二次運行時(如在一個循環中)加快速度