background image

PHP

 

     中

       POSIX

 

     正则表达式详解

 

 

php 中正则表达式有 POSIX 和 PCRE 两种,php 中使用正则表达式很灵活。

本文来讲讲 POSIX 表达式,下面是我列出的几个重要知识点。

(1)定界符"^"和"$"分别表示开始和结束。注意,"^"一旦用上[]表示取非的
匹配。

(2)POSIX 量词的应用,有*、+、?、{n}和{n,}以及{n,m}

(3)方括号表达式[]如^[a-z][0-9]$能够匹配 t6 等

(4)预定义字符簇,如[[:alpha:]]表示大小写字母

(5)ereg_replace()和 split()等的应用

以下是详细知识点:

\
用于关闭后续字符的特殊意义。有时用于反向的打开后续字符的特殊意义。
.
(点号)匹配任意单个的字符,但 NULL 除外。
*
匹配任意数目的字符(可以为 0)。以 ERE 来说,此前置字符可是正则表达式,
.*代表了匹配任意字符的长度。但对于 BRE 而言,*置于正则表达式的第一
个字符,不具任何特殊意义。
^
(脱字号)匹配出现在行首或字符串开始位置的空字符串。ERE:置于任何位置
都具特殊含义;BRE:仅在正则表达式的开头具有此特殊含义。
$
匹配出现在行末的空字符串。ERE:置于任何位置都具特殊含义;BRE:仅在
正则表达式的结尾具有此特殊含义。
[...]
方括号表达式,匹配方括号内的任意一字符。连字符(-)指的是连续字符的范围。
^符号置于方括号里第一个字符则有反向含义:指的是匹配不在列表内(方括

 

号 内)的任意字符。作为首字符的一个连字符或是结束方括号(]),则被视为列
表的一部分。所有其他的 meta 字符也为列表的一部分。

以下只属于 BRE
\{n-m}
区间表达式,匹配在它之前的单个字符重现的次数区间。\{n\}指的是重复 n
次;\{n,\}则为至少出现 n 次重复,而\{n,m}为重现 n 至 m 次。
\( \)
\(\)

间的模式存储在特殊的 保留空间 。最多可将 9 个独立的子模式存储

在单个模式中。如\(ab\).*\1,指的是匹配于 ab 组合的两次重现。
\n
重复在\(\)方括号内第 n 个子模式至此点的模式。n 为 1 至 9 的数字,由左
开始。