python正则表达式的懒惰匹配和贪婪匹配说明


Posted in Python onJuly 13, 2020

第一次碰到这个问题的时候,确实不知道该怎么办,后来请教了一个大神,加上自己的理解,才了解是什么意思,这个东西写python的会经常用到,而且会特别频繁,在此写一篇博客,希望可以帮到一些朋友。

例:一个字符串 “abcdacsdnd”

①懒惰匹配

regex = "a.*?d"

②贪婪匹配

regex = "a.*d"

测试代码:

# coding=UTF-8
import re

str = "abcdacsdn"
print("原始字符串 " + str)

# 懒惰匹配
regexL = "a.*?d"
print("懒惰匹配 = " + regexL)
regL = re.compile(regexL)
listL = re.findall(regL, str)
print("懒惰匹配结果")
print(listL)

# 贪婪匹配
regexT = "a.*d"
print("贪婪匹配 = " + regexT)
regT = re.compile(regexT)
listT = re.findall(regT, str)
print("贪婪匹配结果")
print(listT)

测试结果:

python正则表达式的懒惰匹配和贪婪匹配说明

结果分析:

懒惰匹配,匹配成功两次,一次abcd,一次acsd,匹配到满足条件的abcd就停止了此次匹配,不会干扰后面的继续匹配。

贪婪匹配,匹配成功一次,只有abcdacsd,匹配到字符串后,会最大限度的占用字符串

以上两种,一个是尽量匹配最短串,一个是匹配最长串。

补充知识:python正则匹配中贪婪匹配效率比较

用例回归完成之后,一般都要生成一个summary_report.但是,发现生成报告的时间耗时很久,搜集资料发现与匹配文件内容使用的正则表达式有很大关系.

1.匹配模式说明

下图中圈住的部分,没有注释掉的使用贪婪匹配,注释掉的使用非贪婪匹配

python正则表达式的懒惰匹配和贪婪匹配说明

执行时间上二者差别巨大;另外执行时间与正则表达式的长度也有关系,较长的表达式建议分段匹配.

2.贪婪匹配时间

python正则表达式的懒惰匹配和贪婪匹配说明

3.非贪婪匹配时间

python正则表达式的懒惰匹配和贪婪匹配说明

以上这篇python正则表达式的懒惰匹配和贪婪匹配说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python解析xml模块封装代码
Feb 07 Python
python实现超简单端口转发的方法
Mar 13 Python
浅谈python字典多键值及重复键值的使用
Nov 04 Python
Django自定义认证方式用法示例
Jun 23 Python
Python模拟三级菜单效果
Sep 11 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
tensorflow之并行读入数据详解
Feb 05 Python
python3安装OCR识别库tesserocr过程图解
Apr 02 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
Jun 12 Python
python 最简单的实现适配器设计模式的示例
Jun 30 Python
django序列化时使用外键的真实值操作
Jul 15 Python
在Python中实现字典反转案例
Dec 05 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
Jul 13 #Python
对python中list的五种查找方法说明
Jul 13 #Python
使用Python项目生成所有依赖包的清单方式
Jul 13 #Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 #Python
Python依赖包迁移到断网环境操作
Jul 13 #Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 #Python
python--shutil移动文件到另一个路径的操作
Jul 13 #Python
You might like
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
php定时执行任务设置详解
2015/02/06 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
JS 控制小数位数的实现代码
2011/08/02 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
深入理解JavaScript单体内置对象
2016/06/06 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
Python控制Firefox方法总结
2019/06/03 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
P/Invoke是什么
2015/07/31 面试题
EJB的几种类型
2012/08/15 面试题
物流经理自我评价
2013/09/23 职场文书
专科毕业生学习生活的自我评价
2013/10/26 职场文书
大学运动会通讯稿
2014/01/28 职场文书
2014年教师节活动总结
2014/08/29 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
HR必备:超全面的薪酬待遇管理方案!
2019/07/12 职场文书
python 爬取华为应用市场评论
2021/05/29 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python