background image

preg_match()
preg_quote()
preg_split()
preg_replace()
定界符:
POSIX 兼容正则没有定界符,函数的相应参数会被认为是正则。
PERL 兼容正则可以使用任何不是字母、数字或反斜线(\)的字符作为定界符,如果作为
定界符的字符必须被用在表达式本身中,则需要用反斜线转义。也可以使用(),{},[] 和 
<> 作为定界符
修正符:
POSIX 兼容正则没有修正符。
PERL 兼容正则中可能使用的修正符(修正符中的空格和换行被忽略,其它字符会导致错
误):
i (PCRE_CASELESS):
匹配时忽略大小写。
m(PCRE_MULTILINE):
当设定了此修正符,行起始(^)和行结束($)除了匹配整个字符串开头和结束外,还分别匹
配其中的换行符(\n)的之后和之前。
s(PCRE_DOTALL):
如果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此
设定的话,则不包括换行符。
x(PCRE_EXTENDED):
如果设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略。
e:
如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作

 

为 PHP 

 

 

代码求值,并用其结果来替换所搜索的字符串。只有 preg_replace() 使用此修正符,

 

其它 PCRE 函数将忽略之。
A(PCRE_ANCHORED):

如果设定了此修正符,模式被强制为 anchored”,即强制仅从目标字符串的开头开始匹配。
D(PCRE_DOLLAR_ENDONLY):
如果设定了此修正符,模式中的行结束($)仅匹配目标字符串的结尾。没有此选项时,如

 

果最后一个字符是换行符的话,也会被匹配在里面。如果设定了 m 修正符则忽略此选项。
S:
当一个模式将被使用若干次时,为加速匹配起见值得先对其进行分析。如果设定了此修正

 

符则会进行额外的分析。目前,分析一个模式仅对没有单一固定起始字符的 non-anchored 
模式有用。
U(PCRE_UNGREEDY):

使 ?”的默认匹配成为贪婪状态的。
X(PCRE_EXTRA):
模式中的任何反斜线后面跟上一个没有特殊意义的字母导致一个错误,从而保留此组合
以备将来扩充。默认情况下,一个反斜线后面跟一个没有特殊意义的字母被当成该字母本