PCRE 字符类
由于 PCRE 语法支持更短的字符类和更多的特性,因此它比 POSIX 语法更为强大。表 5 列出了 PCRE 中支持而在 POSIX 表达式中没有的部分字符类。
| 字符类 | 描述 |
|---|---|
\b |
词边界,查找词的开始和结尾 |
\d |
匹配任意数字 |
\s |
匹配任意空白,如 tab 或空格 |
\t |
匹配一个 tab 字符 |
\w |
匹配包含字母与数字的字符 |
PHP 中的 PCRE 匹配函数与 POSIX 匹配函数类似,但如果您习惯使用 POSIX 表达式,那么 PCRE 匹配函数的一项特性可能会使您感到棘手:PCRE 函数要求表达式以分隔符开始和结束。在绝大多数示例中,分隔符都是一个 /,可在引号内表达式的开始和结尾处看到。务必牢记,此分隔符并非表达式的一部分。
在 PCRE 中的最后一个分隔符后,您可添加一个修饰符来更改正则表达式的行为。举例来说,i 修饰符使正则表达式对大小写不敏感。这是与 POSIX 方法的一项重要差异,在 POSIX 中,您需要按照对大小写敏感性的需求来调用不同的方法。
preg_grep() 方法返回一个数组,其中包含通过正则表达式在其中找到匹配项的另外一个数组的全部项目。如果您有一个较大的值集,并希望对其进行搜索以查找匹配项,那么该方法非常有用。下面是一个示例:
|
在本例中,正则表达式 ^\d+$ 查找行的开始(^)和结尾($)之间包含一个或多个数字(\d+)的数组的所有元素。
preg_match() 函数使用 PCRE 在字符串中查找匹配项,它需要两个参数:regex 和字符串。您可以选择提供一个将由匹配项填充的数组、允许您修改匹配操作行为的标志,还可提供字符串中开始查找匹配项的位置(offset)。示例如下:
|
本例使用了正则表达式 ^[a-z]+$,在行的开始(^)和结尾($)之间搜索可查找到一次或多次的([a-z]+)、从 a 到 z 的任意字母。
preg_match_all() 函数为在字符串中查找到的全部匹配项构建一个数组。下例构建了一个包含句子中全部词的数组:
|
正则表达式 \b\w+\b 在词边界(\b)间查找可找到一次或多次的(\w+)单词字符。每个词都将置入输出数组 $arrayout 的一个数组元素中。