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轻松实现代码编码格式转换
Mar 26 Python
Python实现爬取逐浪小说的方法
Jul 07 Python
Python生成随机密码的方法
Jun 16 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
解决Python安装后pip不能用的问题
Jun 12 Python
用python3读取python2的pickle数据方式
Dec 25 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
Dec 07 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
Python 求向量的余弦值操作
Mar 04 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实现微信公众平台音乐点播
2014/03/20 PHP
支持中文、字母、数字的PHP验证码
2015/05/04 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
jquery选择器(常用选择器说明)
2010/09/28 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python构建深度神经网络(续)
2018/03/10 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
Python3.6简单的操作Mysql数据库的三个实例
2018/10/17 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
Java程序员面试90题
2013/10/19 面试题
送餐员岗位职责范本
2014/02/21 职场文书
结婚喜宴主持词
2014/03/14 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
2015年党员岗位承诺书
2015/04/27 职场文书
交通安全学习心得体会
2016/01/18 职场文书
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python