常用正则表达式—邮箱

本文介绍了如何使用正则表达式`w+@w+(.w+)+`来匹配和验证电子邮件地址。通过示例代码展示在字符串列表和文本文件中应用此正则表达式的验证过程,并指出未使用边界符`^`和`$`的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

邮箱域名的规则:由英文字母、数字、下划线、"."组成。一般常见的域名都是一级域名,例如yqq@qq.com,还有很多其他的多级域名,例如yqq@ywx.163.com

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

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

解析域名:

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

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

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

import re
s=["yqq@qq.com","yqq@ywx.163.com","yqq@.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'>
yqq@.com不是正确的邮箱格式
list1= ['yqq@qq.com', 'yqq@ywx.163.com']

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

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

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值