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下函数参数的传递(参数带星号的说明)
Sep 19 Python
Python入门篇之面向对象
Oct 20 Python
Python中DJANGO简单测试实例
May 11 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
Python 操作MySQL详解及实例
Apr 30 Python
python实现二分查找算法
Sep 21 Python
Python实现ping指定IP的示例
Jun 04 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 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
音乐朗读剧《MARS RED》2021年TV动画化决定!
2020/03/06 日漫
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
jquery实现checkbox 全选/全不选的通用写法
2014/02/22 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
调试Python程序代码的几种方法总结
2015/04/28 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
python交互式图形编程实例(一)
2017/11/17 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
python日期相关操作实例小结
2019/06/24 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
一名女生的自荐信
2013/12/08 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
如何写辞职信
2015/05/13 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
你需要掌握的20个Python常用技巧
2022/02/28 Python