gpt4 book ai didi

python - 忽略与正则表达式不完全匹配的字符串?

转载 作者:行者123 更新时间:2023-12-01 05:07:16 24 4
gpt4 key购买 nike

我想使用正则表达式返回电子邮件的所有收件人。例如:

Date: Wed, 6 Dec 2000 02:03:00 -0800 (PST)
From: donald.herrick@enron.com
To: brianherrick@email.msn.com, herriceu2@tdprs.state.tx.us,
robertherrick@bankunited.com, kristi.demaiolo@enron.com,
suresh.raghavan@enron.com, harry.arora@enron.com
Subject: FW: If Santa Answered his mail...
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-From: Donald W Herrick
X-To: brianherrick@email.msn.com, HERRICEU2@tdprs.state.tx.us, RobertHerrick@bankunited.com, Kristi Demaiolo, Suresh Raghavan, Harry Arora
X-cc:
X-bcc:

应返回(从“收件人:”行)brianherrick@email.msn.com、herriceu2@tdprs.state.tx.us、robertherrick@bankunited.com、kristi.demaiolo@enron.com、suresh .raghavan@enron.com、harry.arora@enron.com

不是(来自“X-To:”行)brianherrick@email.msn.com、HERRICEU2@tdprs.state.tx.us、RobertHerrick@bankunited.com .

我当前的正则表达式是 re.findall([To:\s][\w\.-]+@[\w\.-]+, text) 它返回“至:”、“X-至:”和“发件人:”行。

我的问题:

  1. 为什么“发件人:”行中的电子邮件地址也被返回?它与正则表达式的 [To:\s] 部分不匹配?!
  2. 如何确保只有“收件人:”后面的电子邮件地址才是回到? (也就是说,如何排除以下电子邮件地址“X-至:”?我认为您可以为此使用前瞻断言,但我不确定如何执行此操作?

最佳答案

作为 @MartijnPieters 答案的附录,正则表达式可能不是适合该作业的工具。要解析电子邮件,建议使用 email.parser

>>> from email.parser import Parser
>>> headers = Parser().parsestr(email_str)
>>> pprint.pprint(map(str.strip, headers['to'].split()))
['brianherrick@email.msn.com,',
'herriceu2@tdprs.state.tx.us,',
'robertherrick@bankunited.com,',
'kristi.demaiolo@enron.com,',
'suresh.raghavan@enron.com,',
'harry.arora@enron.com']

关于python - 忽略与正则表达式不完全匹配的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24775547/

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