尝试存档正则表达式以过滤退回的电子邮件,这些电子邮件与垃圾邮件不同或暂时无法送达。
我们的想法是抓住表达式可能包含的某些单词(代码+单词)但忽略整行,如果它包含其他内容(例如SPAM |暂时无法送达|超出磁盘配额)等,因为这不会被视为永久性反弹。我们已经管理了第一部分,并在这里找到了一些关于负面正则表达式(http://stackoverflow.com/questions/1153856/string-negation-using-regular-expressions)的答案,但是在一个组中混合两者都完全没有成功到目前为止的判决。
类似的东西:
.*(5.3.0|5.1.0).*(User unknown|invalid|Unknown address|doesn't have a)
但如果同一行中的任何其他地方包含xxx字,则不匹配。类似的东西:
^(?!(SPAM|temporarily undeliverable|disk quota exceeded)).*$
所以下面的第一行会匹配,但第二行不应该
诊断代码:smtp; 5.3.0 - 其他邮件系统问题554-“交付 错误:dd此用户没有btinternet.com帐户 (xxxxxxxx@xxxxxinternet.com)[0] - mta1000.bt.mail.ird.yahoo.com“ (交付尝试:0)
诊断代码:smtp; 5.1.0 - 未知地址错误550-'RCPT TO:邮箱磁盘配额超出'(交付 尝试:0)
答案 0 :(得分:2)
您只是在字符串的开头搜索您的否定。您只需添加.*
试
^(?!.*(SPAM|temporarily undeliverable|disk quota exceeded)).*(5.3.0|5.1.0).*(User unknown|invalid|Unknown address|doesn't have a)