我试图解析一个电子邮件字符串,并试图提取所有转发器的详细信息。
“此致\nAnkit Balyan\n\n\n----------转发的消息----------\n\n发件人:无名氏\n日期:2018年8月23日星期四下午04:00\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条答案
按热度按时间eufgjt7s1#
您可以使用
参见regex demo
From:\s*
-From:
和0+空格(?<name>[^<]*)
-组"名称":除<
以外的任何0+字符(?:<(?<email>[^><]+)>)?
-可选的非捕获组,匹配出现1次或0次的以下项:<
-一个<
字符(?<email>[^><]+)
-组"电子邮件":除<
和>
之外的任何1+字符>
-一个>
字符(?:\nDate:\s*(?<date>.+))?
-一个可选的非捕获组,匹配出现1次或0次的换行符、Date:
、0+空格,然后是捕获除换行符以外的任何1+字符的"日期"组(?:\nSubject:\s*(?<subject>.+))?
-一个可选的非捕获组,匹配出现1次或0次的换行符、Subject:
、0+个空格,然后是捕获除换行符以外的任何1+个字符的"主题"组