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遍历目录的方法小结
Apr 28 Python
python中reload(module)的用法示例详解
Sep 15 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
Jun 13 Python
python如何保证输入键入数字的方法
Aug 23 Python
Python如何计算语句执行时间
Nov 22 Python
Python操作多维数组输出和矩阵运算示例
Nov 28 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
python3.8动态人脸识别的实现示例
Sep 21 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
Python matplotlib多个子图绘制整合
Apr 13 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
2014/07/28 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
扩展easyui.datagrid,添加数据loading遮罩效果代码
2010/11/02 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
JavaScript代码实现左右上下自动晃动自动移动
2016/04/08 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
node 命令方式启动修改端口的方法
2018/05/12 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
JavaScript中的this妙用实例分析
2020/05/09 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python实现求笛卡尔乘积的方法
2017/09/16 Python
Python中实现变量赋值传递时的引用和拷贝方法
2018/04/29 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python入门之井字棋小游戏
2020/03/05 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
电脑售后服务承诺书
2014/03/27 职场文书
企业公益活动策划方案
2014/08/24 职场文书
八年级作文之感恩
2019/11/22 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
yolov5返回坐标的方法实例
2022/03/17 Python
浅谈Vue的computed计算属性
2022/03/21 Vue.js