Bootstrap

正则表达式匹配邮箱地址

原文:https://blog.csdn.net/zrr789/article/details/79918247

首先推荐两个学习正则表达式的网站
一、
https://regexper.com
这个网站是把正则表达式可视化,效果如图所示
这里写图片描述
二、
https://regexr.com/
这个网站是对正则表达式进行解释
界面如图所示:
这里写图片描述

好了进入正题

首先了解电子邮箱的格式:
常见的电子邮箱格式:

abc@163.com   abc@qq.com
 
 
  • 1

不太常见的电子邮箱格式,在@符号之前还有点.

zhangshna.Mr@163.com,abc_Wang.dd@sian.com,abc_Wang.dd.cc@sian.com
 
 
  • 1

所以匹配电子邮箱的正则表达式为:

[\w]+(\.[\w]+)*@[\w]+(\.[\w])+
 
 
  • 1

对该正则表达式的解释

[\w]+             匹配至少一个数字、字母、下划线的字符;
 
 
  • 1

(.[\w]+)*

总的意思是匹配0次或多次 点.+数字或字母或下划线
 *        表示 匹配0次或多次的前面的符号
 \.       匹配符号 .
 [\w]+    匹配至少一个数字、字母、下划线的字符;
 
 
  • 1
  • 2
  • 3
  • 4

@[\w]+(.[\w])+

@   匹配@
[\w]+  匹配至少一个数字、字母、下划线的字符;
(\.[\w])+  匹配至少一次  点.+数字或字母或下划线
 
 
  • 1
  • 2
  • 3

脚本代码

import re
str1 = '[email protected]  [email protected]  [email protected] [email protected]  [email protected]'
reg_str1 = r'([\w]+(\.[\w]+)*@[\w]+(\.[\w])+)'
mod = re.compile(reg_str1)

items = mod.findall(str1)
for item in items:
    print(item)
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

执行结果

这里写图片描述

;