Regex 不包含方括号的字符串的正则表达式
我正在尝试编辑我的.procmailrc文件以清除垃圾邮件 该账户来自我学校的CS部门,部门内的所有电子邮件都有括号内的主题,例如: [专业]一些科目 或: [本科生]另一门学科Regex 不包含方括号的字符串的正则表达式,regex,procmail,Regex,Procmail,我正在尝试编辑我的.procmailrc文件以清除垃圾邮件 该账户来自我学校的CS部门,部门内的所有电子邮件都有括号内的主题,例如: [专业]一些科目 或: [本科生]另一门学科 我收到很多垃圾邮件没有被过滤器捕获,但几乎所有的垃圾邮件都不包含括号。我想将这些电子邮件移动到垃圾邮件文件夹中,但无法计算正则表达式。任何可以提供帮助的regex masters?您可以按照特定顺序设置.procmailrc,以帮助实现您的愿望procmail读取procmailrc,并使用匹配的第一个配方停止。因此,
我收到很多垃圾邮件没有被过滤器捕获,但几乎所有的垃圾邮件都不包含括号。我想将这些电子邮件移动到垃圾邮件文件夹中,但无法计算正则表达式。任何可以提供帮助的regex masters?您可以按照特定顺序设置
.procmailrc
,以帮助实现您的愿望procmail
读取procmailrc
,并使用匹配的第一个配方停止。因此,您可以在文件开头执行所有常规处理,并在结尾添加类似于以下内容的内容
此示例测试主题是否存在[
,并保留这些消息。任何与任何其他配方不匹配且主题中不包含[
的消息都将移动到垃圾邮件中(本例使用good
文件夹保存邮件,使用spam
文件夹移动不匹配的邮件--调整名称以适应您的设置)
注意:通过在可能的垃圾邮件
配方中没有条件行,procmail将把以前没有匹配配方的所有邮件移动到可能的垃圾邮件
文件夹。实际上有几十个正则表达式
您可以选择在[
取决于您想要匹配的松紧程度。查看将完成您需要的并根据需要替换的正则表达式。对于主题:
标题,不包含开口方括号的简单Procmail方法非常简单
:0 # Add a second colon if the spam box is an mbox folder
* ^Subject:[^[]*$
spam
这只是检查开头的方括号,而忽略了您可能会收到只包含结尾方括号的合法邮件的可能性(我认为它本身就是垃圾邮件)
…但为了完整起见,我要提到的是,如果您想在其中添加一个右方括号,这是一种特殊情况,需要在字符类中进行特定排序(就像破折号需要先到或后到才能消除字符范围中的歧义)。这种类型的常见字符类是[^][]
这是一个包含右方括号和右方括号的否定字符类。它们必须精确地按此顺序工作;在任何其他位置,右方括号将关闭字符类。(在其中也不能反斜杠转义;字符类中的反斜杠是文字。)您可以将左括号与[[]
匹配,或者将除左括号外的所有字符与[^[]匹配
。procmail
支持的regex
的完整列表在man 5 procmailrc
中。非常感谢!我认为您解释的括号内的问题正是我遇到的问题。这非常有效,并且确实适用于procmail。
:0 # Add a second colon if the spam box is an mbox folder
* ^Subject:[^[]*$
spam