我有很多thunderbird导出的文件。我需要从每个文件中收集电子邮件ID 。所有电子邮件都是退回的电子邮件ID,这就是为什么我们需要从系统中删除它们。
字符串
Reporting-MTA: dsn; a27-19.smtp-out.us-west-2.amazonses.com
Action: failed
Final-Recipient: rfc822; mrinalkantighosh005@gmail.com
Diagnostic-Code: smtp; 550-5.1.1 The email account that you tried to reach does not exist. Please try
每个电子邮件ID都以Final-Recipient开头:rfc822; mrinalkantighosh005@gmail.com
因此格式为Final-Recipient: rfc822; EMAIL_ID_HERE
你能告诉我正则表达式提取电子邮件ID吗?
提前致谢。
更新
我能够提取所有的电子邮件ID。此正则表达式正在选择所有电子邮件ID: -
(?:[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)])
但我只需要捕获在“最终收件人:rfc822”之后开始的电子邮件ID字符串。
答案 0 :(得分:1)
为了匹配你想要的东西你可以使用 look-behind 断言。由于这个断言有zero-length
并且不匹配任何东西,你可以在你的后视断言之后放置你的模式。像这样:
请注意
这不是匹配电子邮件的合适模式我只是 希望你看到后面的断言
答案 1 :(得分:0)
完美无缺: -
(?(?<=Final-Recipient: rfc822;).[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])