Python re.findall匹配以From开头的邮箱返回空列表问题
问题原因及解决方法
你的正则匹配失败的核心原因是:^From (\S+@\S+)要求From之后直接紧跟非空白字符的邮箱,但实际字符串里From后面是空格加Daniel:,并非邮箱,所以匹配失败返回空列表。
解决代码
修改正则,让它跳过From到邮箱之间的任意内容,即可正确捕获邮箱:
import re x="From Daniel: dani78.72.dom@gmail.com UTC-8" y=re.findall("^From .*?(\S+@\S+)",x) print(y)
正则说明
^From:确保匹配以From开头的行.*?:非贪婪匹配任意字符(除换行),跳过From到邮箱前的内容,避免过度匹配(\S+@\S+):捕获邮箱格式的字符串(非空白字符+@+非空白字符)
运行后输出:
['dani78.72.dom@gmail.com']
内容的提问来源于stack exchange,提问作者JorgeMioska19
相关产品推荐
相关产品推荐

