python中如何正确使用正则表达式的详细模式(Verbose mode expression)


Posted in Python onNovember 08, 2017

简单介绍

正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。

下图展示了使用正则表达式进行匹配的流程:

python中如何正确使用正则表达式的详细模式(Verbose mode expression)

正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。

引言

当大家写的正则表达式比较长,比较复杂时,发现经常会写错,或者很难维护,遇到这种情况怎么办呢?这个不用急,聪明的设计人员早已经想到这种情况了,提供了一种叫做详细模式(Verbose mode expression)。当你使用这种模式时,可以给正则表达式添加注释,这样在维护时就不会像看天书了,同时也可以添加额外的空格,进行对齐排版。

紧凑模式的例子:

import re 
 
address = re.compile('[\w\d.+-]+@([\w\d.]+\.)+(com|org|edu)') 
 
candidates = [ 
 u'first.last@example.com', 
 u'first.last+category@gmail.com', 
 u'valid-address@mail.example.com', 
 u'not-valid@example.foo', 
] 
 
for candidate in candidates: 
 match = address.search(candidate) 
 print('{:<30} {}'.format( 
 candidate, 'Matches' if match else 'No match') 
 )

详细模式的修改之后:

#python 3.6 
#蔡军生 
#http://blog.csdn.net/caimouse/article/details/51749579 
# 
import re 
 
address = re.compile( 
 ''''' 
 [\w\d.+-]+ # username 
 @ 
 ([\w\d.]+\.)+ # domain name prefix 
 (com|org|edu) # TODO: support more top-level domains 
 ''', 
 re.VERBOSE) 
 
candidates = [ 
 u'first.last@example.com', 
 u'first.last+category@gmail.com', 
 u'valid-address@mail.example.com', 
 u'not-valid@example.foo', 
] 
 
for candidate in candidates: 
 match = address.search(candidate) 
 print('{:<30} {}'.format( 
 candidate, 'Matches' if match else 'No match'), 
 )

结果输出如下:

first.last@example.com  Matches
first.last+category@gmail.com Matches
valid-address@mail.example.com Matches
not-valid@example.foo  No match

参数解释:X    VERBOSE

该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。当该标志被指定时,在 RE 字符串中的空白符被忽略,除非该空白符在字符类中或在反斜杠之後;这可以让你更清晰地组织和缩进 RE。它也可以允许你将注释写入 RE,这些注释会被引擎忽略;注释用 "#"号 来标识,不过该符号不能在字符串或反斜杠之後。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
wxPython中listbox用法实例详解
Jun 01 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
python爬虫爬取某站上海租房图片
Feb 04 Python
python中的内置函数max()和min()及mas()函数的高级用法
Mar 29 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
Python二维码生成识别实例详解
Jul 16 Python
解决python3 安装不了PIL的问题
Aug 16 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
Python count函数使用方法实例解析
Mar 23 Python
python3 logging日志封装实例
Apr 08 Python
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
May 28 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 #Python
Python入门之三角函数全解【收藏】
Nov 08 #Python
Python入门之三角函数tan()函数实例详解
Nov 08 #Python
Python入门之三角函数sin()函数实例详解
Nov 08 #Python
Python入门之三角函数atan2()函数详解
Nov 08 #Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 #Python
python的变量与赋值详细分析
Nov 08 #Python
You might like
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
两个DIV等高的JS的实现代码
2007/12/23 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
究竟什么是Node.js?Node.js有什么好处?
2015/05/29 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
JS的Ajax与后端交互数据的实例
2018/08/08 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
python中threading超线程用法实例分析
2015/05/16 Python
详解python的ORM中Pony用法
2018/02/09 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
PyGame贪吃蛇的实现代码示例
2018/11/21 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
python 如何停止一个死循环的线程
2020/11/24 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
预备党员政审材料
2014/02/04 职场文书
运动会广播稿20字
2014/02/18 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
化工操作工岗位职责
2014/04/29 职场文书
小学重阳节活动总结
2015/03/24 职场文书
财务出纳岗位职责
2015/03/31 职场文书
医院感染管理制度
2015/08/05 职场文书
聘用合同范本
2015/09/21 职场文书
python实现层次聚类的方法
2021/11/01 Python