首頁  >  文章  >  後端開發  >  PHP—PCRE與POSIX正規表示式的不同

PHP—PCRE與POSIX正規表示式的不同

伊谢尔伦
伊谢尔伦原創
2016-11-21 17:06:291510瀏覽

自 PHP 5.3.0起, POSIX 正規表示式擴充被廢棄。在 POSIX 正規和 PCRE 正則之間有一些不同,本文列出了在轉向PCRE 時最顯著的需要知道的不同點。

PCRE 函數需要模式以分隔符號閉合。

不像POSIX,PCRE 擴充功能沒有專門用於大小寫不敏感匹配的函數。取而代之的是,支援使用i (PCRE_CASELESS) 模式修飾符完成相同的工作。 其他模式修飾符同樣可用於改變匹配策略。

POSIX 函數從最左面開始尋找最長的匹配,但是 PCRE 在第一個合法匹配後停止。如果字串 不匹配這沒有什麼區別,但是如果匹配,兩者在結果和速度上都會有差別。 為了說明這個不同, 考慮下面的例子(來自Jeffrey Friedl 的《精通正規表示式》一書)。 使用模式 one(self)?(selfsufficient)? 在字串oneselfsufficient 上匹配,PCRE 會匹配到oneself,但是使用 POSIX,結果將是整個字串 oneselfsufficient。 兩個子字串都符合原始字串,但是 POSIX 將 最長的最為結果。

函數對照表

POSIX

PCRE

ereg_replace()    preg_replace()   🠎 gi_replace()    preg_replace()    

eregi()    preg_match()    

split ()    preg_split()    

spliti()    preg_split()    

sql_regcase()    無對等函數

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn