Procmail正则表达式与高级应用指南
1. 正则表达式简介
在处理数据时,正则表达式是一项强大的工具。Procmail实现的正则表达式形式与其他UNIX实用程序略有不同。Procmail的匹配默认情况下不区分大小写,除非使用D标志,正则表达式也是如此,并且默认使用多行匹配。
简单来说,正则表达式可以理解为在数据主体中搜索短语或模式。例如,以下规则可以匹配所有邮件头和/或正文中包含“mystical monsters”短语的邮件,并将其放入相应文件夹:
:0 HB: * mystical monsters ${MAILDIR}/monsters/然而,这个过滤器无法匹配包含“mystical monster”或“mystical - monsters”等短语的邮件。正则表达式的真正强大之处在于能够以简化格式描述文本或数据模式,然后在数据主体中搜索这些模式的匹配项。但要注意,“简化”并不意味着正则表达式容易阅读,现实中遇到的大多数正则表达式可能并不简单。例如,用于确定邮件是否为MIME编码并将其存储在合适文件夹的规则:
:0: * ^Content-Type: multipart/[^;]+;[ ]*boundary="?\/[^"]+ ${MAILDIR}/mime/其中,字符., [, ^, ;, ], +, ?, \, /,和"是特殊指令,而非它们通常代表的ASCII字符。