正则表达式以识别电子邮件转发详细信息

时间:2018-08-23 11:18:47

标签: regex

我正在尝试解析电子邮件字符串,并尝试提取所有转发器详细信息。

  

“致谢\ nAnkit Balyan \ n \ n \ n ----------转发的邮件--------- \ n \ n发件人:John Doe \ n日期:8月23日,星期四, 2018年04:00 PM \ n主题:我的电子邮件主题\ n收件人:Ankit Balyan \ n \ n \ n嗨,\ n \ n这是出于测试目的\ n \ n“

它应该在捕获组中提取如下内容。

From Name: John Doe
From Email: john.doe@gmail.com
Date: Thu, Aug 23, 2018 at 04:00 PM
Subject: my Email Subject

我尝试了以下

(?:\\nFrom: ([^<]*))?(?:<?(.+@[^>]+)>?)?(?:\\nDate: ([^<]*))?(?:\\nSubject: (.+(?=)))?(?:\\nTo: ([^<]*))?(?:<?(.+@[^>]+)>?)

1 个答案:

答案 0 :(得分:1)

您可以使用

From:\s*(?<name>[^<]*)(?:<(?<email>[^><]+)>)?(?:\nDate:\s*(?<date>.+))?(?:\nSubject:\s*(?<subject>.+))?

请参见regex demo

enter image description here

详细信息

  • From:\s*-From:和0+空格
  • (?<name>[^<]*)-组“名称”:<以外的任何0+个字符
  • (?:<(?<email>[^><]+)>)?-一个可选的非捕获组,匹配以下情况的1或0:
    • <-一个<字符
    • (?<email>[^><]+)-组“电子邮件”:除<>之外的任何1个以上的字符
    • >-一个>字符
  • (?:\nDate:\s*(?<date>.+))?-一个可选的非捕获组,它匹配1个或0个换行符,Date:,0+个空格,然后“日期”组捕获除换行符以外的任何1个以上的字符< / li>
  • (?:\nSubject:\s*(?<subject>.+))?-一个可选的非捕获组,它匹配1或0个换行符,Subject:,0+个空格,然后组“主题”,捕获除换行符以外的任何1+个字符< / li>