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中循环语句的嵌套使用
May 14 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
我就是这样学习Python中的列表
Jun 02 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Django中自定义admin Xadmin的实现代码
Aug 09 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
python3 实现口罩抽签的功能
Mar 11 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
新手必备Python开发环境搭建教程
May 28 Python
Python Django模型详解
Oct 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
最新版本PHP 7 vs HHVM 多角度比较
2016/02/14 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
深入分析PHP设计模式
2020/06/15 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
2015/11/09 Javascript
原生js实现addclass,removeclass,toggleclasss实例
2016/11/24 Javascript
js仿京东轮播效果 选项卡套选项卡使用
2017/01/12 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
React组件refs的使用详解
2018/02/09 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
详解Python的Lambda函数与排序
2016/10/25 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
自行车广告词大全
2014/03/21 职场文书
银行进社区活动总结
2014/07/07 职场文书
创先争优个人承诺书
2014/08/30 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
python区块链持久化和命令行接口实现简版
2022/05/25 Python