regex 用于标识电子邮件转发详细信息的正则表达式

ukdjmx9f  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(90)

我试图解析一个电子邮件字符串,并试图提取所有转发器的详细信息。
“此致\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: ([^<]*))?(?:<?(.+@[^>]+)>?)
eufgjt7s

eufgjt7s1#

您可以使用

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+字符的"日期"组
  • (?:\nSubject:\s*(?<subject>.+))?-一个可选的非捕获组,匹配出现1次或0次的换行符、Subject:、0+个空格,然后是捕获除换行符以外的任何1+个字符的"主题"组

相关问题