我正在尝试解析电子邮件字符串,并尝试提取所有转发器详细信息。
“致谢\ 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: ([^<]*))?(?:<?(.+@[^>]+)>?)
答案 0 :(得分:1)
您可以使用
From:\s*(?<name>[^<]*)(?:<(?<email>[^><]+)>)?(?:\nDate:\s*(?<date>.+))?(?:\nSubject:\s*(?<subject>.+))?
请参见regex demo
详细信息
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>