我试图在python中使用mbox格式的邮件获取发件人的地址。当我获得包含发件人的行时,它看起来像From: Mister X <misterx@domain>
。我能够检索邮件地址,例如re.findall('<[a-zA-Z0-9\.]+@[a-zA-Z0-9\.]+>', str)
。我认为应该没问题,因为据我所知,电子邮件地址不能包含任何其他字符。我不明白的是为什么我希望与电子邮件地址中的任何字符匹配的表达式<*@*>
根本不起作用。实际上,re.findall('<*@*>', 'From: Mister X <misterx@domain>')
会返回['>']
。
答案 0 :(得分:1)
<*
表示:&#34;字符&lt; 零次或多次&#34;。您正在寻找<.*@.*>
答案 1 :(得分:0)
这是我的答案。
why the expression <*@*>, which I expected to match any characters in the email address does not work at all.
因为您使用re
模块将表达式<*@*>
评估为正则表达式。如果要将表达式评估为通配符,请使用fnmatch
模块。但fnmatch
只有检查字符串是否匹配的函数。因此,您无法使用fnmatch
获得匹配。从您的问题来看,您似乎想要检索邮件地址,因此不应使用fnmatch
模块。只需使用re
模块即可获得匹配。
我认为你只是在通配符之间混淆正则表达式。