Python松散正则表达式用法分析


Posted in Python onApril 29, 2016

本文实例讲述了Python松散正则表达式用法。分享给大家供大家参考,具体如下:

Python 允许用户利用所谓的 松散正则表达式来完成这个任务。一个松散正则表达式和一个紧凑正则表达式主要区别表现在两个方面:

1. 忽略空白符。空格符,制表符,回车符不匹配它们自身,他们根本不参与匹配。(如果你想在松散正则表达式中匹配一个空格符,你必须在它前面添加一个反斜线符号对他进行转义)

2. 忽略注释。在松散正则表达式中的注释和在普通Python代码中的一样:开始于一个#符号,结束于行尾。这种情况下,采用在一个多行字符串中注释,而不是在源代码中注释,他们以相同的方式工作。

下面是一个松散正则表达式的例子,直观地看,正则表达式模式被分成好几行来写了,我们可以为每行配上我们的注释。这样在过段时间后回头过来看我们可以很快地知道这个正则表达式的作用,增强代码的可读性。

>>> import re
>>> pattern = """
  ^          # beginning of string
  M{0,4}       # thousands - 0 to 4 M's
  (CM|CD|D?C{0,3})  # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),
            #      or 500-800 (D, followed by 0 to 3 C's)
  (XC|XL|L?X{0,3})  # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),
            #    or 50-80 (L, followed by 0 to 3 X's)
  (IX|IV|V?I{0,3})  # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),
            #    or 5-8 (V, followed by 0 to 3 I's)
  $          # end of string
  """
>>> re.search(pattern, 'M', re.VERBOSE)
<_sre.SRE_Match object at 0x01401570>
>>> re.search(pattern, 'MCMLXXXIX', re.VERBOSE)
<_sre.SRE_Match object at 0x014015C0>
>>> re.search(pattern, 'M')
>>>

使用松散正则表达式时必须传递另外一个参数re.VERBOSE,该参数是定义在re 模块中的一个常量,标志着待匹配的正则表达式是一个松散正则表达式。Python 不能自动检测一个正则表达式是为松散类型还是紧凑类型,所以必须显式的标明一个正则表达式为松散类型。所以

re.search(pattern, 'M', re.VERBOSE)#松散正则表达式

跟:

re.search(pattern, 'M'))#默认为“紧凑”正则表达式

得到的结果就不一样了。

下面是很常见的一些正则表达式

^ 匹配字符串的开始。
$ 匹配字符串的结尾。
\b 匹配一个单词的边界。
\d 匹配任意数字。
\D 匹配任意非数字字符。
x? 匹配一个可选的x字符(换句话说,它匹配1次或者0次x 字符)。
x* 匹配0次或者多次x字符。
x+匹配1次或者多次x字符。
x{n,m} 匹配x字符,至少n次,至多m次。
(a|b|c)要么匹配a,要么匹配b,要么匹配c。
(x) 一般情况下表示一个记忆组(remembered group). 我们可以利用re.search函数返回对象的groups()函数获取它的值。

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
python中通过预先编译正则表达式提高效率
Sep 25 Python
python实现读Excel写入.txt的方法
Apr 29 Python
python中virtualenvwrapper安装与使用
May 20 Python
python批量复制图片到另一个文件夹
Sep 17 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Python+OpenCV感兴趣区域ROI提取方法
Jan 10 Python
python修改字典键(key)的方法
Aug 05 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
Python线程条件变量Condition原理解析
Jan 20 Python
python中私有函数调用方法解密
Apr 29 #Python
简单学习Python time模块
Apr 29 #Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 #Python
python遍历目录的方法小结
Apr 28 #Python
Python网络爬虫实例讲解
Apr 28 #Python
Python脚本实现自动发带图的微博
Apr 27 #Python
Python实现新浪博客备份的方法
Apr 27 #Python
You might like
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
php模拟ping命令(php exec函数的使用方法)
2013/10/25 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
js中setTimeout()与clearTimeout()用法实例浅析
2015/05/12 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
Vue.js 父子组件通讯开发实例
2016/09/06 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
JavaScript定时器设置、使用与倒计时案例详解
2019/07/08 Javascript
pageGroup.js实现分页功能
2019/07/27 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
python转换字符串为摩尔斯电码的方法
2015/07/06 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
外贸英语毕业生自荐信
2013/11/14 职场文书
小学老师寄语大全
2014/04/04 职场文书
基层工作经历证明
2015/06/19 职场文书
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js