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实现根据图标提取分类应用程序实例
Sep 28 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
python 与GO中操作slice,list的方式实例代码
Mar 20 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
Dec 26 Python
Python WEB应用部署的实现方法
Jan 02 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
Django实现发送邮件功能
Jul 18 Python
django 多数据库及分库实现方式
Apr 01 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
Nov 18 Python
python 判断字符串当中是否包含字符(str.contain)
Jun 01 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
Yii学习总结之安装配置
2015/02/22 PHP
Javascript 中的类和闭包
2010/01/08 Javascript
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
详解如何使用node.js的开发框架express创建一个web应用
2018/12/20 Javascript
vue-element-admin 菜单标签失效的解决方式
2019/11/12 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
python中的一些类型转换函数小结
2013/02/10 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
Python发送邮件实现基础解析
2020/08/14 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
HTML5开发动态音频图的实现
2020/07/02 HTML / CSS
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
积极分子思想汇报
2014/01/04 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
医学生求职自荐书
2014/06/12 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android