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列表操作使用示例分享
Feb 21 Python
Python中__init__和__new__的区别详解
Jul 09 Python
简单讲解Python中的闭包
Aug 11 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
Python环境Pillow( PIL )图像处理工具使用解析
Sep 12 Python
python 实现多维数组(array)排序
Feb 28 Python
Python使用configparser读取ini配置文件
May 25 Python
Python 爬虫性能相关总结
Aug 03 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Python3中的tuple函数知识点讲解
Jan 03 Python
python代码实现扫码关注公众号登录的实战
Nov 01 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 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP高级对象构建 多个构造函数的使用
2012/02/05 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP采集静态页面并把页面css,img,js保存的方法
2014/12/23 PHP
使用PHP进行微信公众平台开发的示例
2015/08/21 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
js实现分割上传大文件
2016/03/09 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
[06:16]DOTA2守卫传承者——职业选手谈心路历程
2015/02/26 DOTA
[01:10:03]OG vs EG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Python实现文件按照日期命名的方法
2015/07/09 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
Ralph Lauren英国官方网站:Ralph Lauren UK
2018/04/03 全球购物
主题班会演讲稿
2014/05/22 职场文书
工业设计专业自荐书
2014/06/05 职场文书
2014年新教师工作总结
2014/11/08 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
小时代观后感
2015/06/10 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
matlab xlabel位置的设置方式
2021/05/21 Python