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 相关文章推荐
pyqt4教程之widget使用示例分享
Mar 07 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
自定义Django默认的sitemap站点地图样式
Mar 04 Python
Numpy数组的广播机制的实现
Nov 03 Python
Python实现视频自动打码的示例代码
Apr 08 Python
使用Python解决图表与画布的间距问题
Apr 11 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面向对象编程快速入门
2006/10/09 PHP
php 静态化实现代码
2009/03/20 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
phpmailer中文乱码问题的解决方法
2014/04/22 PHP
PHP信号量基本用法实例详解
2016/02/12 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
php获取linux命令结果的实例
2017/03/13 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
javascript实现随机读取数组的方法
2015/08/03 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
2018/01/23 Python
Python 获取div标签中的文字实例
2018/12/20 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
如何在VSCode下使用Jupyter的教程详解
2020/07/13 Python
利用python进行文件操作
2020/12/04 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
英国在线电子和小工具商店:TecoBuy
2018/10/06 全球购物
党的群众路线对照检查材料
2014/08/27 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
小学语文教师研修日志
2015/11/13 职场文书
思想品德课教学反思
2016/02/24 职场文书