《python3廖雪峰》正则表达式匹配Email地址练习题答案
《python3廖雪峰》正则表达式章节最后留了这个题目,对于初学者还是要折腾一下才能做出来的,我作为初学者,花了1个小时研究出来了,当然只是针对题目中的3种Email地址的正则匹配,如果想写出通用的Email地址正则表达式,就太复杂也没必要了。
先贴上代码,后面再讲解下:
import reregex = r'^(<\w[\s\w]+>\s)?(\w+[\w+.]*@\w+.(org|com)$)'
# 题目一:正则匹配
m = re.compile(regex)
# 纯Email地址
if m.match('someone@gmail.com'):print('match someone@gmail.com')
if m.match('bill.gates@microsoft.com'):print('match bill.gates@microsoft.com')
# 带名字的Email地址
if m.match('<Tom Paris> tom@voyager.org'):print('match <Tom Paris> tom@voyager.org')
# 题目二:提取带名字的Email地址
m_email = m.match('<Tom Paris> tom@voyager.org').group(2)
print(m_email)
输出结果:
讲解:
1.要同时匹配以上3种地址,就要充分考虑共同性,很容易发现第3个地址前面多了“<Tom Paris> ”,注意后面还有一个空格!因此这部分出现0次或1次,也就是(<\w[\s\w]+>\s)?的意义。\w匹配Tom,\s匹配空格,[\s\w]+匹配“ Paris”。最后一个空格用\s匹配。
2.然后就是Email地址本身了。观察知道,第2个其实是包含了第1个地址的,\w+匹配第1个单词不用说了,[\w+.]*匹配后面的单词和小数点,然后是@符号,后面的一样,最后以.com或.org结束,结束符$,开始符^。
3.匹配完了,就是分组提取了。题目要求提取出带名字的Email地址,因此分两组,第1组是前面的名字(<\w[\s\w]+>\s)?,第2组是Email地址(\w+[\w+.]*@\w+.(org|com)$),然后是用re.match的group方法提取出第2个分组。
<span style="font-size:18px;"><strong>虽然做出来了,但是个人感觉这个正则还是有点冗余,然后大神们可以在评论中提出修改意见。</strong></span>
《python3廖雪峰》正则表达式匹配Email地址练习题答案相关推荐
- 利用Python正则表达式匹配email地址
正则表达式给予了Python在字符串匹配的过程中极大的方便. 正则顾名思义就是制定一个规则,至于是谁来遵守,Python中无疑是字符串.当我们在制定完一个字符串的表达形式后,所有符合此规则的字符串都可 ...
- python正则匹配ip地址_Python正则表达式匹配ip地址实例
Python正则表达式匹配ip地址实例 更新时间:2014年10月09日 11:22:51 投稿:shichen2014 这篇文章主要介绍了Python正则表达式匹配ip地址实例,通过简单的实例讲述了 ...
- java邮箱地址正则表达式_Java 正则表达式匹配邮箱地址
作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代 ...
- python re正则提取ip地址_python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
- java正则匹配ip_使用正则表达式匹配IP地址
如何使用正则表达式匹配IP地址?这是很常见的任务.说难也难,说易也易,取决于在匹配的精确度以及正则表达式复杂度之间很好的折中. 通常,IP地址以点分十进制方式表示,IP地址分为4段,以点号分隔.要对I ...
- 《python3廖雪峰》正则表达式提取带名字特殊符号的Email地址
练习 请尝试写一个验证Email地址的正则表达式.版本一应该可以验证出类似的Email: someone@gmail.com bill.gates@microsoft.com # -*- coding ...
- 【linux】函数grep正则表达式匹配邮箱地址
这个问题是看了很多文章总结而得,还没有了解shell编程的朋友们可以来看看,自己的一些见解,欢迎指出错误和不足.话不多说,我们直接进入主题! 如何直接用命令匹配邮箱地址? 首先我们要知道常见的邮箱格式 ...
- java邮箱地址正则表达式_Java 中用正则表达式修改 Email 地址
需求 系统中有一列会用来存储 email 地址,现在需要对输入的字符串进行过滤, 要求是,把无效的地址过滤掉.有一些需要说明的是 这些地址是通过图像识别得到的,有些是用户自己输入的 已有历史记录已经存 ...
- python正则匹配ip地址_python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
最新文章
- python刷新页面_小伙利用Python制作浏览器,网友点评这小伙将来要进腾讯
- 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)
- php封装数据库操作类,php简单数据库操作类的封装
- 高级C语言教程-C语言函数setjmp()函数
- SAP UI5 Web Component for React的图标和图片处理
- 根据id删除localstorage数据_原生js利用localstorage实现简易TODO list应用
- CentOS 创建SVN 服务器,并且自动同步到WEB 目录
- Cookiecutter
- 指导行为--数据分析价值之源
- 怎么把音频转换文字?三个步骤解决它
- 软考架构师 | 01 考试介绍及备考攻略
- 六年如逆旅,我亦是行人:一个顾问的六年安全从业经历
- 078 周期函数定积分性质及定积分三大性质总结
- java中的控制器_SpringMVC基础(一)_控制器
- [转]jackson json字符串、map、java对象的转换例子
- 蓝桥杯-基础练习-特殊回文数
- MySQL学习笔记——第3章 数据表的管理和表中数据操纵
- SpringBoot 项目中在Controller 直接调用Mapper,提示:Field mapper in ‘*Controller ‘ required a bean of type ‘*Map
- IE11不兼容array.from()解决方法
- 读书笔记---将己之欲,施予他人(六)