首先推荐两个学习正则表达式的网站
一、
https://regexper.com
这个网站是把正则表达式可视化,效果如图所示
二、
https://regexr.com/
这个网站是对正则表达式进行解释
界面如图所示:
好了进入正题
首先了解电子邮箱的格式:
常见的电子邮箱格式:
abc@163.com abc@qq.com
不太常见的电子邮箱格式,在@符号之前还有点.
zhangshna.Mr@163.com,abc_Wang.dd@sian.com,abc_Wang.dd.cc@sian.com
所以匹配电子邮箱的正则表达式为:
[\w]+(\.[\w]+)*@[\w]+(\.[\w])+
对该正则表达式的解释
[\w]+ 匹配至少一个数字、字母、下划线的字符;
(.[\w]+)*
总的意思是匹配0次或多次 点.+数字或字母或下划线
* 表示 匹配0次或多次的前面的符号
\. 匹配符号 .
[\w]+ 匹配至少一个数字、字母、下划线的字符;
@[\w]+(.[\w])+
@ 匹配@
[\w]+ 匹配至少一个数字、字母、下划线的字符;
(\.[\w])+ 匹配至少一次 点.+数字或字母或下划线
脚本代码
import re
str1 = 'fdg.123@163.com hdfh.abc@qq.com hidfsd@qq.com gfgfa@qq.com bdfdg@163.com'
reg_str1 = r'([\w]+(\.[\w]+)*@[\w]+(\.[\w])+)'
mod = re.compile(reg_str1)
items = mod.findall(str1)
for item in items:
print(item)