gpt4 book ai didi

regex - 用于从文本中解析名称和电子邮件的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:38 25 4
gpt4 key购买 nike

<分区>

这是我到目前为止形成的正则表达式:

/(?:("?(?:.*)"?)\s*)?\s<(.*@.*)>|(?:mailto:(.*@.*))|(.*@.*)/gi

You can check it out at regex101

我正在尝试从以下内容中提取“姓名”和“电子邮件”:

John Smith <john.smith@gmail.com>
John Smith <johnsmith@gmail.com>
"John Smith" <johnsmith@gmail.com>
"John" <johnsmith@gmail.com>
John Smith<johnsmith@gmail.com>
<johnsmith@gmail.com>
johnsmith@gmail.com
mailto:johnsmith@gmail.com
"John"<johnsmith@gmail.com>

To: John Smith <john.smith@gmail.com>
From: John Smith <john.smith@gmail.com>
Reply-to: john.smith@gmail.com
Return-path: <john.smith@gmail.com>
Message-id: <john.smith@gmail.com>
References: <john.smith@gmail.com>
Original-recipient: rfc822;john.smith@gmail.com
for john.smith@gmail.com
ESMTPSA id <john.smith@gmail.com>
domain of john.smith@gmail.com
envelope-from=john.smith@gmail.com
(ORCPT john.smith@gmail.com)

从头开始,我觉得我差不多了 - 但在 3 件事上遇到了麻烦:

  • 从第一个捕获组中去除双引号

  • 处理空白缺失变体:John Smith<johnsmith@gmail.com>

  • 后一个 block 的“名称”字段中的误报,所以我需要一种排除这些的方法(可能使用前面的 ::=foridof ?)

作为一个完整的正则表达式新手,我希望有知识渊博的人给我一些指导,告诉我如何克服这些问题。

出于好奇,不幸的是,我丢失了我的 CardDAV,因此丢失了所有联系人,所以以真正的 Linux 方式,我将通过手动解析我的整个原始 MBOX 重建电子邮件列表,按最常见的排序,然后去从那里开始。

我将使用 bash grep 或 perl sed

感谢您的宝贵时间!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com