PHP中的POSIX Extended正则表达式

目录

PHP中的POSIX Extended正则表达式

正则表达式

《计算理论》中学过正则表达式的知识,但从没用过。这回看JavaScript和PHP的教程都提到正则表达式,算是懂了一点儿如何使用这个工具。

使用正则表达式,处理字符串十分方便快捷。正如书上说的,使用简单,但编写正则表达式却不容易。

PHP中使用两种正则表达式表示法:POSIX Extended和PCRE。书中只介绍了较为简单的POSIX Extended表示法。

在计算理论中,每个正则表达式都表示一个语言,程序中将该正则表达式成为一个模式(Pattern)。如下面就是一个模式示例:

 ^pattern\:[0-9]{2,}([a-z]+)?&

上述正则表达式共有四种成分:

1. 字面值(literal)

精确匹配。如上式中的 pattern 。

2. 元字符(metacharacter)

具有特定含义的符号。如上式中的 ^ \ () + ? &等。

3. 限定符

指出一个部分(或模式)的出现次数。如上式中的 { } + * 等。

4. 字符类

将字符放在方括号[]中可以创造字符类。用于说明字符的种类。如上式中的 [0-9] [a-z]等。

附加内容:以上四个部分构成最终的正则表达式。

因为“贪婪匹配”,for.* 与 for.*? 在Perl兼容的正则表达式中的区别。但POSIX中则没有这个概念。

MySQL中的正则表达式匹配反斜杠 ** 需要用 *\\*
因为MySQL自己解释一个,正则表达式解释一个。
这点与PHP中相似。PHP中匹配单个反斜杠需要 *\\\* 四个反斜杠。PHP字符串中使用反斜杠,必须对它进行转义,两个反斜杠转义就会得到四个反斜杠。正则表达式的模式是在字符串中表示,首先要进行字符串的转义,在进行正则表达式的转义。

[:digit:] 等类的用法:[[:digit:]]