非貪婪匹配:使用?
修飾符可以將匹配模式設置為非貪婪模式,即盡可能少地匹配。例如,/a.*?b/
會匹配最短的以a
開始以b
結束的字符串。
分組和引用:可以使用括號將匹配模式分組,并使用反向引用來引用這些分組。例如,/(foo|bar)\1/
會匹配foofoo
或barbar
。
后向引用:可以使用\數字
來引用先前匹配的子模式。例如,/(abc)\1/
會匹配abcabc
。
斷言:可以使用斷言來匹配字符串的位置而不消耗字符。例如,/foo(?=bar)/
會匹配foo
后面跟著bar
的字符串,但不會匹配foo
后面沒有跟著bar
的字符串。
遞歸匹配:可以使用(?R)
來實現遞歸匹配,即在正則表達式中引用自身。這在處理嵌套結構的文本時非常有用。
命名捕獲組:可以給捕獲組命名,以便在后續引用中使用。例如,/(?<name>foo)bar\k<name>/
會匹配foo
后面跟著bar
并且再次出現foo
的字符串。
Unicode支持:PHP正則表達式引擎添加了對Unicode字符的支持,可以使用\p{}
或\P{}
來匹配或排除特定的Unicode字符類別。