警告正则表达式是功能强大的字符串匹配工具。因此,趋势科技建议选择使用正则表达式的管理员应该了解并熟悉正则表达式语法。不严谨的正则表达式会对性能产生极大的负面影响。趋势科技建议首先使用不涉及复杂语法的简单正则表达式。当引入新规则时,进行归档并观察邮件安全客户端如何使用规则来管理邮件。在确信规则不会产生意外的结果时,可以进行其他操作。
|
元素
|
含义
|
示例
|
---|---|---|
.
|
点号字符代表除换行字符之外的任何字符。
|
do. 与 doe、dog、don、dos、dot 等匹配。
d.r 与 deer、door 等匹配。
|
*
|
星号表示零个或者更多的前一元素。
|
do* 与 d、do、doo、dooo、doooo 等匹配。
|
+
|
加号字符表示一个或多个前一元素。
|
do+ 与 do、doo、dooo、doooo 等匹配,但不与 d 匹配。
|
?
|
问号字符表示零个或一个前一元素。
|
do?g 与 dg 或 dog 匹配,但不与 doog、dooog 等匹配。
|
( )
|
圆括号字符中包含的任何内容均被视为一个实体。
|
d(eer)+ 与 deer、deereer 或 deereereer 等匹配。+ 符号应用于圆括号中的子字符串,因此该正则表达式查找后面跟随一组或多组 "eer"
的 d。
|
[ ]
|
方括号字符表示一组或一系列字符。
|
d[aeiouy]+ 与 da、de、di、do、du、dy、daa、dae、dai 等匹配。+ 符号应用于方括号中的集合,因此该正则表达式查找后面跟随一个或多个
[aeioy] 集合中的任意字符的 d。
d[A-Z] 与 dA、dB、dC 依次类推一直到 dZ 匹配。方括号中的集合表示 A 到 Z 之间的所有大写字母。
|
[ ^ ]
|
方括号中的克拉字符从逻辑上否定一组或一系列指定字符,表示该正则表达式将会与该组或系列以外的任意字符匹配。
|
d[^aeiouy] 与 db、dc 或 dd、d9、d# 以及其他由 d 后面跟随任何单个非元音字符构成的词匹配。
|
{ }
|
大括号字符设定前一元素出现的次数。大括号内的单个值表示仅在出现该值所设定的次数时构成匹配。由逗号分隔的一对数字表示前一字符的一组有效计数。一个数字后面跟随一个逗号表示没有上限。
|
da{3} 与 daaa--d 匹配,即 d 后面有三个(仅有三个) "a"。da{2,4} 与 daa、daaa、daaaa 和 daaaa 匹配(但不与 daaaaa
匹配),即 d 后面有两个、三个或四个 "a"。da{4,} 与 daaaa、daaaaa、daaaaaa 等匹配,即 d 后面有四个或更多个 "a"。
|
元素
|
含义
|
示例
|
---|---|---|
\d
|
任何数字字符,其功能相当于 [0-9] 或 [[:digit:]]
|
\d 与 1、12、123 等匹配,但与 1b7 不匹配,即与一个或多个任意数字字符匹配。
|
\D
|
任何非数字字符,其功能相当于 [^0-9] 或 [^[:digit:]]
|
\D 与 a、ab、ab& 匹配,但与 1 不匹配,即与不包含 0、1、2、3、4、5、6、7、8 或 9 的一个或多个任意字符匹配。
|
\w
|
任何“词”字符,即任何字母数字字符,其功能相当于 [_A-Za-z0-9] 或 [_[:alnum:]]
|
\w 与 a、ab、a1 匹配,但与 !& 不匹配,即与一个或多个大写或小写字母或数字匹配,但与标点符号或其他特殊字符不匹配。
|
\W
|
任何非字母数字字符,功能相当于 [^_A-Za-z0-9] 或 [^_[:alnum:]]
|
\W 与 * 和 & 匹配,但与 ace 或 a1 不匹配,即与不包含大写/小写字母和数字的一个或多个任意字符匹配。
|
\s
|
任意空白字符,包括空格、换行字符、制表符、非换行空格等,其功能相当于 [[:space]]
|
vegetable\s 与后跟任意空白字符的 "vegetable" 匹配。因此,短语 "I like a vegetable in my soup" 将触发该正则表达式,而短语
"I like vegetables in my soup" 不会触发该正则表达式。
|
\S
|
任意非空白字符,包括空格、换行字符、制表符、非换行空格等字符之外的任意其他字符。其功能相当于 [^[:space]]
|
vegetable\S 与后跟任意非空白字符的 "vegetable" 匹配。因此,短语 "I like vegetables in my soup" 将触发该正则表达式,而短语 "I like a vegetable in my soup" 不会触发该正则表达式。 |
元素
|
含义
|
示例
|
---|---|---|
[:alpha:]
|
任何字母字符
|
.REG.[[:alpha:]]与 abc、def、xxx 匹配,但不与 123 或 @#$ 匹配。
|
[:digit:]
|
任何数字字符;功能上等同于 \d
|
.REG.[[:digit:]]匹配 1、12 和 123 等。
|
[:alnum:]
|
任何“词”字符,即任何字母数字字符;功能上等同于 \w
|
.REG.[[:alnum:]]与 abc 和 123 匹配,但不与 ~!@ 匹配。
|
[:space:]
|
任意空白字符;空格、换行字符、制表符、非换行空格等;功能上等同于 \s
|
.REG.(vegetable)[[:space:]]与后跟任意空白字符的 "vegetable" 匹配。因此,短语 "I like a vegetable in
my soup" 将触发该正则表达式,而短语 "I like vegetables in my soup" 不会触发该正则表达式。
|
[:graph:]
|
除空格、控制字符等之外的任何字符
|
.REG.[[:graph:]]与 123、abc、xxx、>< 匹配,但与空格或控制字符不匹配。
|
[:print:]
|
任何字符(类似于 [:graph:])但包括空格字符
|
.REG.[[:print:]]与 123、abc、xxx、>< 和空格字符匹配。
|
[:cntrl:]
|
任何控制字符(例如,CTRL + C、CTRL + X)
|
.REG.[[:cntrl:]]与 0x03、0x08 匹配,但不与 abc、123、!@# 匹配。
|
[:blank:]
|
空格和制表符字符
|
.REG.[[:blank:]]与空格和制表符字符匹配,但不与 123、abc、!@# 匹配
|
[:punct:]
|
标点符号字符
|
.REG.[[:punct:]]与 ; :? ! ~ @ # $ % & * ‘ “ 等匹配,但与 123、abc 不匹配
|
[:lower:]
|
任何小写字母字符(注意:必须启用“启用区分大小写匹配”,否则其作用将如同 [:alnum:])
|
.REG.[[:lower:]]与 abc、Def、sTress、Do 等匹配,但不与 ABC、DEF、STRESS、DO、123、!@# 匹配。
|
[:upper:]
|
任何大写字母字符(注意:必须启用“启用区分大小写匹配”,否则其作用将如同 [:alnum:])
|
.REG.[[:upper:]]与 ABC、DEF、STRESS、DO 等匹配,但不与 abc、Def、Stress、Do、123、!@# 匹配。
|
[:xdigit:]
|
十六进制数字中允许的数位 (0-9a-fA-F)
|
.REG.[[:xdigit:]]匹配 0a、7E 和 0f 等。
|
元素
|
含义
|
示例
|
---|---|---|
^
|
表示一个字符串的开头。
|
^(notwithstanding) 与以 "notwithstanding" 开头的任何文本块匹配。因此,短语 "notwithstanding the fact
that I like vegetables in my soup" 将触发该正则表达式,而 "The fact that I like vegetables in
my soup notwithstanding" 不会触发该正则表达式。
|
$
|
表示一个字符串的结尾。
|
(notwithstanding)$ 与以 "notwithstanding" 结尾的任何文本块匹配。因此,短语 "notwithstanding the fact
that I like vegetables in my soup" 不会触发该正则表达式,而 "The fact that I like vegetables in
my soup notwithstanding" 将触发该正则表达式。
|
元素
|
含义
|
示例
|
||
---|---|---|---|---|
\
|
为了与正则表达式中具有特殊含义的某些字符(例如,"+")匹配。
|
(1) .REG.C\\C\+\+ 与 "C\C++" 匹配。
(2) .REG.\* 匹配 *。
(3) .REG.\? 匹配 ?。
|
||
\t
|
表示制表符字符。
|
(stress)\t 与包含子字符串 "stress" 且该子字符串后面紧跟制表符 (ASCII 0x09) 字符的任何文本块匹配。
|
||
\n
|
表示换行字符。
|
(stress)\n\n 与包含子字符串 "stress" 且该子字符串后面紧跟两个换行 (ASCII 0x0A) 字符的任何文本块匹配。
|
||
\r
|
表示回车字符。
|
(stress)\r 与包含子字符串 "stress" 且该子字符串后面紧跟一个回车 (ASCII 0x0D) 字符的任何文本块匹配。
|
||
\b
|
表示退格字符。
OR
表示边界。
|
(stress)\b 与包含子字符串 "stress" 且该子字符串后面紧跟一个退格 (ASCII 0x08) 字符的任何文本块匹配。
词边界 (\b) 的定义为两个字符之间的点,一边是 \w,另一边是 \W(顺序不限)。字符串的开头和结尾之外的虚字计为与 \W 相匹配。(在字符类内,\b 表示退格,而不是词边界。)
例如,以下正则表达式可与身份证号码相匹配:.REG.\b\d{3}-\d{2}-\d{4}\b
|
||
\xhh
|
表示通过给定十六进制代码表示的 ASCII 字符(其中 hh 代表任何两位十六进制值)。
|
\x7E(\w){6} 与恰好包含六位字母数字字符并且六位字母数字字符前面带有一个 ~(波形符)字符的任何文本块匹配。因此,该表达式与词 "~ab12cd"、"~Pa3499"
匹配,但与 "~oops" 不匹配。
|
.REG.\b\d{3}-\d{2}-\d{4}\b
|
|
333-22-4444
|
匹配
|
333224444
|
不匹配
|
333 22 4444
|
不匹配
|
3333-22-4444
|
不匹配
|
333-22-44444
|
不匹配
|