gpt4 book ai didi

python - EMAIL id 匹配器-python 正则表达式无法弄清楚

转载 作者:行者123 更新时间:2023-11-28 22:52:36 29 4
gpt4 key购买 nike

我正在尝试匹配 username@siteaddress 形式的特定类型的电子邮件地址其中用户名是最小长度为 5 的非空字符串,由字符 {a-z A-Z 0-9 构建。 _}。用户名不能以“.”开头或'_'站点地址是一个前缀的构建,该前缀是从字符{a-z A-Z 0-9}(不包括括号)后跟以下后缀之一{.com",".org"构建的非空字符串", "edu", ".co.in"}。以下代码不起作用

list=re.findall("[a-zA-Z0-9][a-zA-Z0-9._][a-zA-Z0-9._][a-zA-Z0-9._][a-zA-Z0-9._][a-zA-Z0-9._]*@[a-zA-Z0-9][a-zA-Z0-9]*\.(com|edu|org|co\.in)",raw_input())

然而,当我在最后一个括号中添加一个 '?:' 时,下面的代码工作正常,无法找出原因

list=re.findall("[a-zA-Z0-9][a-zA-Z0-9._][a-zA-Z0-9._][a-zA-Z0-9._][a-zA-Z0-9._][a-zA-Z0-9._]*@[a-zA-Z0-9][a-zA-Z0-9]*\.(?:com|edu|org|co\.in)",raw_input())

最佳答案

您不应该使用自己的电子邮件地址正则表达式 - 众所周知,正确执行此操作非常困难。参见 http://www.regular-expressions.info/email.html以讨论该主题。

要总结那篇文章,这通常就足够了:\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2 ,4}\b

这个更精确(作者声称 99.99% 的电子邮件地址):

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@
(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

这是完全匹配所有可能的 RFC 5322 的版本电子邮件地址:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*
| "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])*")
@ (?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
| \[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \\[\x01-\x09\x0b\x0c\x0e-\x7f])+)
\])

最后一个显然有点矫枉过正,但它让您了解所涉及的复杂性。

关于python - EMAIL id 匹配器-python 正则表达式无法弄清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304378/

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