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类定义的讲解
Nov 01 Python
python实现哈希表
Feb 07 Python
Python中元组,列表,字典的区别
May 21 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
对pandas中apply函数的用法详解
Apr 10 Python
Python+OpenCV目标跟踪实现基本的运动检测
Jul 10 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
selenium+python配置chrome浏览器的选项的实现
Mar 18 Python
Python绘制组合图的示例
Sep 18 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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+xslt在windows平台上
2006/10/09 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
JS跨域代码片段
2012/08/30 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
详解Angular5 服务端渲染实战
2018/01/04 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Vue性能优化的方法
2020/07/30 Javascript
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
用C++封装MySQL的API的教程
2015/05/06 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
python3判断url链接是否为404的方法
2018/08/10 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python3 max()函数基础用法
2019/02/19 Python
flask应用部署到服务器的方法
2019/07/12 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
应届生个人求职信模板
2013/11/26 职场文书
服务员岗位责任制
2014/02/11 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
2014年双拥工作总结
2014/11/21 职场文书
严以用权专题学习研讨会发言材料
2015/11/09 职场文书
Golang 空map和未初始化map的注意事项说明
2021/04/29 Golang
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL