邮箱的规则是:名称@域名。
邮箱名称的规则:由英文字母、数字、下划线组成。
邮箱域名的规则:由英文字母、数字、下划线、"."组成。一般常见的域名都是一级域名,例如,还有很多其他的多级域名,例如
名称:\w+(解析:\w表示字母、数字、下划线,+表示1个或者多个)
域名: \w+(\.\w+)+
解析域名:
- 第一个\w+表示紧跟@后面的字符;
- (\.\w+)+:\.表示只可以匹配. (\.\w+)只可以匹配一级域名,后面加上+可以匹配一级或者多级域名(PS:也可以使用(\.\w+){1,})表示匹配一级或者多级域名
邮箱的正则表达式:\w+@\w+(\.\w+)+
- 邮箱在列表里面进行正则匹配
import re
s=["","","y@.com"]
pattern = re.compile(r"\w+@\w+(\.\w+)+")
print(type(pattern))
list1 = []
for i in s:
object1 = pattern.search(i)
if object1:
list1.append(object1.group())
else:
print("%s不是正确的邮箱格式" %i)
print("list1=",list1)
#执行结果:
<class '_sre.SRE_Pattern'>
y@.com不是正确的邮箱格式
list1= ['', '']
- 邮箱在文件里面进行正则匹配
import re
list2 = []
pattern = re.compile(r"\w+@\w+(\.\w+)+")
with open("E:\\Python_Question\\file.txt") as file_obj:
for line in file_obj:
object2 = pattern.search(line)
if object2:
list2.append(object2.group())
else:
print("%s里面的邮箱格式不正确" %line)
print("list2=",list2)
#执行结果:
第三行的内容:y@.com里面的邮箱格式不正确
list2= ['', '']
#file.txt的内容如下:
第一行的内容:
第二行的内容:
第三行的内容:y@.com
PS:邮箱的表达式没有使用开头^和结尾$符合,如果写成^\w+@\w+(\.\w+)+$,在文件里面就匹配不了邮箱,因为^要求每一行内容的开头要满足邮件,file.txt文件里的开头不满足开头要求

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/56077.html