内容过滤系统支持
正则表达式
搜索, 它是一个功能全面的系统,不仅您让您搜索特定的文本字符,也可以搜索到文本
类型
。 正则表达式包含纯文本和特殊字符的组合来指示进行哪种类型的匹配,从而使您的“内容过滤器”规则变得更加强大和准确。
什么是规则表达?
一个正则表达式(regexp)是由
元字符
和文字数字的文本字符,或者“
文字的
”(abc,123,及其他)混合组合而成的文本模式。 该类型用于匹配文本字符——并附有匹配的结果,是成功还是失败。 Regexps 主要用于规则文本匹配以及搜索和替换。
在正则表达式中,元字符是有特定功能及用途的特殊字符。 在 MDaemon“内容过滤”系统中的 Regexp 实施允许以下特殊字符:
\ | () [] ^ $ * + ? . <>
若在一元字符钱使用反斜线 (“
\
”), 将使元字符被处理为文字字符。 若您希望正则表达式搜索其中一个用作元字符的特殊字符,这一点是有必要的。 例如,要搜索“+”您的表达式中必须包含“\+”。
使用
交替
字符(亦叫做“
或
”或者“
竖线
”),当您希望字符两侧的其中一个表达式符合目标字符。 正则表达式是“abc|xyz”。搜索一个文本字符时,会出现符合条件的“abc”或“xyz”。
[...]
框(“[” 及 “]”)内包含的字符组就表示该组中的任意字符都可能符合所查找的文本字符。 括号里字符间的破折号(“-”)表示了字符的范围。 例如,在表达式“[a-z]”中搜索字符“abc”将生成三个匹配项: "
a
,” “
b
,”以及“
c
。 ”使用表达式“[az]”只会生成一个匹配项: "
a
。”
表示字符串的开头。 在目标字符串中,“abc ab a”表达式“^a”将生成一个匹配项—目标字符串中的第一个字符。 正则表达式“^ab”也将生成一个匹配项—
目标字符串中的
第一第二个字符。
[^...]
紧跟左括号(“[”)后的插入记号(“^”)有不同的含义。 用于将括号内剩余的字符排除在符合条件的目标字符串之外。 表达式“[^0-9]”表明目标字符不是数字。
(...)
圆括号影响了样式估计的顺序,也可作为
带标记的
表达式,用于
搜索和替换
表达式。
正则表达式的搜索结果可以暂时保存,也可用于
替换
表达式以建立新的表达式。 在
替换
表达式中,您可以包含一个“$0”字符,将会以正则表达式搜索过程中所找到的子字符串来替换。 所以,如果
搜索
表达式“a(bcd)e”找到了一个子字符串匹配项,那么“123-$0-123”的
替换
表达式将以“123-abcde-123”来替换符合条件的文本。
同样地,在替换表达式中您也可以使用特殊字符“$1,”“$2,”“$3,”
等等
。 这些字符只会被
已标记
表达式的结果所替代,而不是整个子字符串的匹配项。 紧跟反斜线的数字表明您想要引用的带标记表达式(如果正则表达式中包含了不知一个带标记的表达式)。 例如,如果您的
搜索
表达式是“(123)(456)”并且您的
替换
表达式是“a-$2-b-$1”,那么一个符合的子字符将由 "a-456-b-123"替代,而“a-$0-b”的一个
替换
表达式将以“a-123456-b”替代。
美元记号(“$”)代表字符串的结尾。 在文本字符串中,“13 321 123”表达式“3$”将生成一个匹配项—字符串中的最后一个字符。 正则表达式“^123$”也将生成一个匹配项——
目标字符串中的
最后三个字符。
星号(“*”)量词表明星号左边的字符
在一行字符中出现的次数
必须大于等于零次。 那么“1*abc”将符合文本“111abc”以及“abc”。
与星号量词类似,“+”量词表明加号左边的字符
在一行字符中出现的次数
必须大于等于一次。 那么,“1+abc”将符合文本“111abc”而不符合文本“abc”。
问号(“?”)量词表明问号左边的字符必须匹配
零或一
次。
因此“1?abc”将匹配文本“abc”,并且匹配“111abc”的“1abc”部分。
句号或者点(“.”)元字符将符合任何其他字符。 那么“.+abc”将符合“123456abc”,且“a.c”将符合“aac”,“abc”,“acc”等等。
符合的条件和操作
正则表达式可用于任何“
报头
”过滤器规则“
条件
”。 例如,任何使用“
if the FROM HEADER contains
”条件的规则。 正则表达式同样可以使用“
if the MESSAGE BODY
”条件。
正则表达式可用于两个“内容过滤器”规则“
操作
”: "“
搜索并替换报头中的文字
”以及“
搜索并替换邮件正文中的文字
。”
配置邮件头或者邮件主体条件使用规则表达:
1.
在创建规则对话框中上,点击相应复选框以加入你希望插入到你的规则当中的,邮件头或者邮件主体条件。
2.
在“创建规则”对话框底部的摘要区域,点击与此条件相应的您在步骤一中所选择的“
包含特定字符串
”链接。这将打开“指定搜索文本”对话框。
3.
在“当前指定的字符串...”区域
,
点击“包含...”链接。
4.
从下拉列表框中选择“
匹配正则表达式
”,然后点击“
确定
”。
5.
如果您需要帮助来创建您的 regexp 或希望对其进行测试,请点击“
测试正则表达式
”。 如果您不需要使用“测试正则表达式”对话框,则在提供的文本框中输入您的 regexp,点击“
添加
”,并跳到步骤 8。
6.
在“搜索表示式”文本框中输入您的正则表达式。 简单化处理过程,我们已经提供了一个快捷菜单,可以用来方便的插入渴望的特殊字符到您的 regexp。 点击“>”按钮进入此菜单。 当您选择了这个菜单中的一个选项,会将其对应的特殊字符插入到表达式中,并将文本插入点移至字符所需的合适位置。
7.
在提供的文本区域,输入任何你希望用来测试你表达式的文本,然后点击
测试
。 当你完成对你的表达的测试时,点击“
确定
”。
8.
点击“
确定
”。
9.
继续正常的创建你的规则。
在规则的操作中配置 Regexp
要配置一个“搜索并替换文字…”操作来使用正则表达式:
1.
在“创建规则”对话框中,点击您希望插入到您规则中与“
搜索并替换文字...
”操作相对应的复选框。
2.
在“创建规则”对话框底部的摘要区域,点击与此操作相应的您在步骤1中选择的“
指定信息
”链接。这将打开“搜索和替换”对话框。
3.
如果您在步骤1中选择了“
搜索...报头
”,则使用提供的下拉列表框来选择您希望搜索的报头,未列出所需报头时,在此框中输入一个报头。 如果您在步骤 1 中没有选择“
搜索...报头
”操作,请跳过这一步。
4.
输入您希望用于此操作的
搜索
表达式。 简单化处理过程,我们已经提供了一个快捷菜单,可以用来方便的插入渴望的特殊字符到您的 regexp。 点击“>”按钮进入此菜单。 当您选择了这个菜单中的一个选项,会将其对应的特殊字符插入到表达式中,并将文本插入点移至字符所需的合适位置。
5.
输入您希望用于此操作的
替换
表达式。 除了
搜索
表达式以外,我们还为此选项提供了一个元字符快捷方式菜单。 如果您希望删除一个匹配的子字符串而不是用更多地文本替换,则留此文本框为空。
6.
如果您希望表达式区分大小写,则点击“
匹配大小写
”。
7.
如果您希望搜索和替换被作为正则表达式,则点击“正则表达式”。 否则其将被作为一个简单的子字符串搜索和替换—它将对文本的额外的文字匹配进行查找,而不是将其作为正则表达式来处理。
8.
如果您不需要测试您的表达式,请跳过这一步。 如果您需要测试你的表达式,点击“
运行测试
。” 在搜索和替换测试者对话框, 输入您的搜索和替换表达式,以及你希望测试的文本,点击
测试
。 当你完成对 regexps 的测试时,点击
确定
。
9.
点击“
确定
”。
10.
继续正常的创建你的规则。