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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
python django集成cas验证系统
Jul 14 Python
Python中的作用域规则详解
Jan 30 Python
python获取本机mac地址和ip地址的方法
Apr 29 Python
Python如何通过subprocess调用adb命令详解
Aug 27 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
在Python中分别打印列表中的每一个元素方法
Nov 07 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
numpy linalg模块的具体使用方法
May 26 Python
django foreignkey(外键)的实现
Jul 29 Python
Python一行代码解决矩阵旋转的问题
Nov 30 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使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP中的函数-- foreach()的用法详解
2013/06/24 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
分享14个很酷的jQuery导航菜单插件
2011/04/25 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
JS仿淘宝实现的简单滑动门效果代码
2015/10/14 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
原生js实现验证码功能
2017/03/16 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
英语感恩演讲稿
2014/01/14 职场文书
银行内勤岗位职责
2014/04/09 职场文书
美术教师个人工作总结
2015/02/06 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
军训结束新闻稿
2015/07/17 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python