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 相关文章推荐
Django静态资源URL STATIC_ROOT的配置方法
Nov 08 Python
Python类的用法实例浅析
May 27 Python
Python变量作用范围实例分析
Jul 07 Python
使用Python操作excel文件的实例代码
Oct 15 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
python使用tornado实现登录和登出
Jul 28 Python
利用Python实现原创工具的Logo与Help
Dec 03 Python
解决python tkinter界面卡死的问题
Jul 17 Python
django框架cookie和session用法实例详解
Dec 10 Python
flask框架自定义url转换器操作详解
Jan 25 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
Python开发简易五子棋小游戏
May 02 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
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
PHP给文字内容中的关键字进行套红处理
2016/04/12 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
判断多个元素(RADIO,CHECKBOX等)是否被选择的原理说明
2009/02/18 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
2016/11/22 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
vue的状态管理模式vuex
2017/11/30 Javascript
[02:20]DOTA2亚洲邀请赛 IG战队出场宣传片
2015/02/07 DOTA
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
python正则表达式抓取成语网站
2013/11/20 Python
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
详解Django之admin组件的使用和源码剖析
2018/05/04 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
DC Shoes官网:美国滑板鞋和服饰品牌
2017/09/03 全球购物
理工类毕业自我鉴定
2014/02/20 职场文书
毕业生工作求职信
2014/06/30 职场文书
新闻学专业求职信
2014/07/28 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
药房管理制度范本
2015/08/06 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis