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 相关文章推荐
python根据距离和时长计算配速示例
Feb 16 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
微信跳一跳游戏python脚本
Apr 01 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
Python3.4 splinter(模拟填写表单)使用方法
Oct 13 Python
python3实现名片管理系统
Nov 29 Python
python异常处理try except过程解析
Feb 03 Python
基于python实现可视化生成二维码工具
Jul 08 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Python并发编程实例教程之线程的玩法
Jun 20 Python
python数字转对应中文的方法总结
Aug 02 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
谏山创故乡大分县日田市水坝将设立《进击的巨人》立艾伦、三笠以及阿尔敏的铜像!
2020/03/06 日漫
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
2016/02/04 Javascript
Javascript设计模式之观察者模式(推荐)
2016/03/29 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
javascript json对象小技巧之键名作为变量用法分析
2019/11/11 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python入门教程之if语句的用法
2015/05/14 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
python循环输出三角形图案的例子
2019/11/22 Python
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
如何进行Linux分区优化
2016/09/13 面试题
电气自动化大学生求职信
2013/10/16 职场文书
毕业论文评语大全
2014/04/29 职场文书
自主招生自荐信格式
2015/03/04 职场文书
信仰纪录片观后感
2015/06/08 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
2021/05/28 Python
Django REST framework 限流功能的使用
2021/06/24 Python
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏