用于匹配电子邮件地址的自定义正则表达式模式

2024-10-02 14:30:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有我正在阅读的内容,我需要从内部收集电子邮件。但是,我只想从以下地址提取邮件:

以下是一个例子:

Recip: fhavor@gmail.com
Subject: Report results (Gd)
Headers: Received: from daem.com (unknown [127.1.1.1])
Date: Sat, 13 Feb 2021 13:11:42 +0000 (GMT)
From: Tavon Lo <lt35@gmail.com>

正如您所见,有多封电子邮件,但我只想收集内容中From:部分之后的电子邮件。这将是“lt35@gmail.com". 到目前为止,我有一个很好的正则表达式,可以收集内容中的所有电子邮件

   EMAIL = r"((?:^|\b)(?:[^\s]+?\@(?:.+?)\[\.\][a-zA-Z]+)(?:$|\b))"

我是新的正则表达式模式,所以任何关于如何改进上述模式的想法或建议,只收集来自以下地址的电子邮件:将不胜感激


Tags: fromreportcom内容电子邮件地址模式邮件
1条回答
网友
1楼 · 发布于 2024-10-02 14:30:20

你可以用

(?m)^From:[^<>\n\r]*<([^<>@]+@[^<>]+)>

regex demo

详细信息

  • (?m)-re.M内联修饰符选项
  • ^-行的开始
  • From:-一个文本字符串
  • [^<>\n\r]*-除{}、>、CR和LF之外的零个或多个字符
  • <-a<字符
  • ([^<>@]+@[^<>]+)-第1组:除<>@以外的一个或多个字符,然后是@字符,然后是除<>以外的一个或多个字符
  • >-a>字符

请参见Python演示:

import re
rx = re.compile(r'^From:[^<>\n\r]*<([^<>@]+@[^<>]+)>', re.M) # Define the regex

with open(your_file_path, 'r') as f:  # Open file for reading
  print(rx.findall(f.read()))         # Get all the emails after From:

相关问题 更多 >