正则表达式的语法

要创建正则表达式,您必须使用特定语法,即一些特殊字符和构建规则。例如,以下是一个简单的正则表达式示例,可以匹配任意一个 nnn-nnn-nnnn 格式的 10 位电话号码:

\d{3}-\d{3}-\d{4}

下表介绍了正则表达式中常用的一些特殊字符。这些字符分为以下几类:

字符数 说明
锚点
^ (脱字符号)匹配行首或正则表达式搜索的字符串的开头。例如,如果某条内容规则包含“主题行”位置和以下正则表达式:

^abc

,则会捕获所有主题行以字母 abc 开头的电子邮件
$ (美元符号)匹配行尾或正则表达式搜索的字符串的末尾。例如,如果某条内容规则包含“主题行”位置和以下正则表达式:

xyz$

,则会捕获所有主题行以字母 xyz 结尾的电子邮件
元字符
(圆点)匹配除换行符以外的任意单个字符。
| (竖线)表示备选项,即“或”。例如:

cat|dog 匹配字词 catdog
\ 表示下一个字符是文字字符,而非特殊字符。例如:

\. 匹配一个句点,而非任意字符(参见上述圆点字符)
字符类
[...] 匹配某一字符集中的任意字符。在字符集中可使用短划线分隔第一个字符和最后一个字符。例如:

[123] 匹配数字 123

[a-f] 匹配 af 之间的任意字符

注意:“内容合规性”政策中的正则表达式区分大小写。
[^...] 匹配某一字符集以外的任意字符。例如:

[^a-f]匹配 af 以外的任意字符

注意:“内容合规性”政策中的正则表达式区分大小写。
[:alnum:] 匹配字母或数字:

a-zA-Z0-9

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:alnum:]]。
[:alpha:] 匹配字母:

a-zA-Z

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:alpha:]]。
[:digit:] 匹配数字:

0-9

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:digit:]]。
[:graph:] 仅匹配可见字符,即空格、控制符等以外的所有其他字符。

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:graph:]]。
[:punct:] 匹配标点字符和符号:

! " # $ % & ' ( ) &ast; + , \ -. / : ; < = > ? @ [ ] ^ _ ` { | }

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:punct:]]。
[:print:] 匹配可见字符和空格。

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:print:]]。
[:space:] 匹配所有空白字符,包括空格、制表符和换行符。

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:space:]]。
[:word:] 匹配任意字词字符,即任意字母、数字或下划线:

a-zA-Z0-9 或 _

注意:在正则表达式中使用此字符类时,必须将其以另外一组方括号括起,例如:[[:word:]]。
缩略字符类
\w 匹配任意字词字符,即任意字母、数字或下划线:

a-zA-Z0-9 或 _

与 [:word:] 作用相同
\W 匹配任意非字词字符,即字母、数字或下划线以外的任意字符。

与 [^[:word:]] 作用相同
\s 匹配任何空白字符。例如,使用此字符指定短语中两个字词之间的空格:

stockstips 匹配短语 stock tips

与 [:space:] 作用相同
\S 匹配空白字符以外的任意字符。

等效于 [^[:space:]]
\d 匹配 0-9 中的任意数字。

与 [:digit:] 作用相同
\D 匹配 0-9 以外的任意字符。

与 [^[:digit:]] 等效
Group
(...) 将表达式的不同部分归入不同的分组。利用分组,您可以为某个分组分配一个量词,也可以在某个分组的前后匹配字符类。
量词
{n} 准确匹配前一个表达式 n 次。例如:

[a-c]{2} 匹配 ac 之间的任意字母,前提是这些字母连续出现两次。因此,该表达式会匹配 abbc,而不会匹配 abcaabbc
{n,m} 匹配前一个表达式最少 n 次,最多 m 次。例如:

[a-c]{2,4} 匹配 ac 之间的任意字母,前提是这些字母连续至少出现 2 次且最多出现 4 次。因此,该表达式会匹配 ababc,而不会匹配 aabbc
表示前一个字符或表达式可以匹配 0 次或 1 次。与范围 {0,1} 作用相同。例如,以下正则表达式:

colou?r

既匹配 colour,也匹配 color,因为 ? 的存在使得字母 u 成为可选项。