PCRE模式
在线手册:中文 英文
PHP手册

与POSIX正则表达式的不同

php 5.3.0, POSIX 正则表达式扩展被废弃.在POSIX正则和 PCRE正则之间有一些不同, 本页列出了在转向PCRE时最显著的需要知道的不同点.

  1. PCRE函数需要模式以分隔符闭合.
  2. 不像POSIX, PCRE扩展没有专门用于大小写不敏感匹配的函数. 取而代之的是, 支持使用/i 模式修饰符完成同样的工作. 其他模式修饰符同样可用于改变匹配策略.
  3. POSIX函数从最左面开始寻找最长的匹配, 但是PCRE在第一个合法匹配后停止. 如果字符串 不匹配这没有什么区别, 但是如果匹配, 两者在结果和速度上都会有差别. 为了说明这个不同, 考虑下面的例子(来自Jeffrey Friedl的《精通正则表达式》一书). 使用模式 one(self)?(selfsufficient)?在字符串oneselfsufficient 上匹配, PCRE会匹配到oneself, 但是使用POSIX, 结果将是整个字符串 oneselfsufficient. 两个子串都匹配原始字符串, 但是POSIX将 最长的最为结果.

函数对照表
POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() 无对等函数


PCRE模式
在线手册:中文 英文
PHP手册
PHP手册 - N: 与POSIX正则表达式的不同

用户评论:

jasen at treshna dot com (26-Oct-2011 11:11)

there are several other differences

including different meaning for the symbols  ( [
different rules for which symbols need escaping (they can't be the same as both standard posix and extended posix)

you should read the full documentation for PCRE before chaging any posix regex to use pcre.