使用正则表达式python

时间:2017-01-23 02:41:30

标签: python regex email-validation

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

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

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

我的问题的一个例子是:

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

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

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

3 个答案:

答案 0 :(得分:2)

试用validate_email包。

pip install validate_email

然后

from validate_email import validate_email
is_valid = validate_email('example@example.com')

答案 1 :(得分:2)

^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$

不是我的,但我之前在应用中使用过它。

Source

答案 2 :(得分:2)

python re docs\w匹配任何字母数字字符和下划线,相当于集合[a-zA-Z0-9_]。因此[\w\.-]会恰当地匹配数字和字符。

email = re.findall(r'[\w\.-]+@[\w\.-]+(\.[\w]+)+',line)

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