使用正则表达式python查找电子邮件

Par*_*ker 2 python regex email-validation

我想在文本文件中找到有效的电子邮件地址,这是我的代码:

email = re.findall(r'[a-zA-Z\.-]+@[\w\.-]+',line)
Run Code Online (Sandbox Code Playgroud)

但我的代码显然不包含@符号前有数字的电子邮件地址。而且我的代码无法处理没有有效结尾的电子邮件地址。那么有人可以帮我解决这两个问题吗?谢谢!

我的问题的一个例子是:

我的代码可以找到此电子邮件:xyz@gmail.com

但它找不到这个:xyz123@gmail.com

它也无法过滤掉这封电子邮件:xyz@gmail

Mic*_*ado 6

python re docs\w匹配任何字母数字字符和下划线,相当于 set [a-zA-Z0-9_]。所以[\w\.-]将适当地匹配数字和字符。

email = re.findall(r'[\w\.-]+@[\w\.-]+(\.[\w]+)+',line)
Run Code Online (Sandbox Code Playgroud)

这篇文章更广泛地讨论了匹配电子邮件地址,并且您遇到了代码无法捕获的匹配电子邮件地址的更多陷阱。例如,电子邮件地址不能完全由标点符号 ( ...@....) 组成。此外,地址通常有最大长度,具体取决于电子邮件服务器。此外,许多电子邮件服务器匹配非英文字符。因此,根据您的需要,您可能需要更全面的模式。

  • 使用这个 `r'[\w\.-]+@[\w\.-]+(?:\.[\w]+)+'` 会更加稳健。 (5认同)