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开发心得
Jul 16 Python
python选择排序算法实例总结
Jul 01 Python
Python贪心算法实例小结
Apr 22 Python
Django使用详解:ORM 的反向查找(related_name)
May 30 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
Python和Go语言的区别总结
Feb 20 Python
Python基于mysql实现学生管理系统
Feb 21 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
Python Pandas pandas.read_sql_query函数实例用法分析
Jun 21 Python
详解Python+OpenCV进行基础的图像操作
Feb 15 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代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
jquery 打开窗口返回值实现代码
2010/03/04 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
JS 页面计时器示例代码
2013/10/28 Javascript
Javascript的闭包详解
2014/12/26 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
react build 后打包发布总结
2018/08/24 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
vuex入门最详细整理
2020/03/04 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python实现基本进制转换的方法
2015/07/11 Python
python脚本监控docker容器
2016/04/27 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
Python列表对象实现原理详解
2019/07/01 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
python类共享变量操作
2020/09/03 Python
python 写一个性能测试工具(一)
2020/10/24 Python
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
Linux文件操作命令都有哪些
2016/07/23 面试题
文化宣传方案
2014/03/13 职场文书
食品工程专业求职信
2014/06/15 职场文书
2014个人年度工作总结
2014/12/15 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
JS Object构造函数之Object.freeze
2021/04/28 Javascript
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技