常用正则表达式—邮箱

邮箱的规则是:名称@域名。

邮箱名称的规则:由英文字母、数字、下划线组成。

邮箱域名的规则:由英文字母、数字、下划线、"."组成。一般常见的域名都是一级域名,例如[email protected],还有很多其他的多级域名,例如[email protected]

名称:\w+(解析:\w表示字母、数字、下划线,+表示1个或者多个)

域名: \w+(\.\w+)+

解析域名:

  1. 第一个\w+表示紧跟@后面的字符;
  2. (\.\w+)+:\.表示只可以匹配.     (\.\w+)只可以匹配一级域名,后面加上+可以匹配一级或者多级域名(PS:也可以使用(\.\w+){1,})表示匹配一级或者多级域名

邮箱的正则表达式:\w+@\w+(\.\w+)+

  • 邮箱在列表里面进行正则匹配

import re
s=["[email protected]","[email protected]","[email protected]"]
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'>
[email protected]不是正确的邮箱格式
list1= ['[email protected]', '[email protected]']

  • 邮箱在文件里面进行正则匹配

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)
#执行结果:
第三行的内容:[email protected]里面的邮箱格式不正确
list2= ['[email protected]', '[email protected]']        
#file.txt的内容如下:
第一行的内容:[email protected]
第二行的内容:[email protected]
第三行的内容:[email protected]

PS:邮箱的表达式没有使用开头^和结尾$符合,如果写成^\w+@\w+(\.\w+)+$,在文件里面就匹配不了邮箱,因为^要求每一行内容的开头要满足邮件,file.txt文件里的开头不满足开头要求

发布了14 篇原创文章 · 获赞 0 · 访问量 2477

猜你喜欢

转载自blog.csdn.net/weixin_44232308/article/details/103853743