PHP支持两种风格的正则表达式语法:POSIX和Perl。这两种风格的正则表达式是PHP编译时的默认风格。在PHP 5.3版本中,Perl风格不能被禁用。然而,这里我们将介绍更简单的POSIX风格,但如果你已经是一位Perl程序员,或者希望了解更多关于PCRE的内容,可以阅读在线手册:http://www.php.net/pcre。
提示 POSIX正则表达式更容易掌握,但示它们不是二进制安全的。
到目前为止,我们进行的所有模式匹配都使用了字符串函数。我们只限于进行精确匹配,或精确的子字符串匹配。如果希望完成一些更复杂的模式匹配,应该用正则表达式。正则表达式在开始时候很难掌握,但却是非常有用的。
4.6.1 基础知识
正则表达式是一种描述一段文本模式的方法。到目前为止,我们前面所用到过的精确(文字)匹配也是一种正则表达式。例如,前面我们曾搜索过正则表达式的术语,像"shop"和"delivery"。
在PHP中,匹配正则表达式更有点像strstr匹配,而不像相等比较,因为是在一个字符串的某个位置(如果不指明则可能在字符串中的任何位置)匹配另一个字符串。例如,字符串"shop"匹配正则表达式"shop"。它也可以匹配正则表达式"h"、"ho",等。
除了精确匹配字符外,还可以用特殊字符来指定表达式的元意(meta-meaning)。例如,使用特殊字符,可以指定一个在字符串开始或末尾肯定存在的模式,该模式的某部分可能被重复,或模式中的字符属于特定的某一类型。此外,还可以按特殊字符的出现来匹配。接下来,我们将逐个讨论这些变化。