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 相关文章推荐
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
解决Python requests库编码 socks5代理的问题
May 07 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python3数据库操作包pymysql的操作方法
Jul 16 Python
对Python 语音识别框架详解
Dec 24 Python
十分钟搞定pandas(入门教程)
Jun 21 Python
12个Python程序员面试必备问题与答案(小结)
Jun 24 Python
python pandas移动窗口函数rolling的用法
Feb 29 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
Python进行区间取值案例讲解
Aug 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实现智能文件类型检测的实现代码
2011/08/02 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
Prototype最新版(1.5 rc2)使用指南(1)
2007/01/10 Javascript
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
原生js实现淘宝放大镜效果
2020/10/28 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
Python的另外几种语言实现
2015/01/29 Python
Python中设置变量访问权限的方法
2015/04/27 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
python pygame实现方向键控制小球
2019/05/17 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
CSS+jQuery实现的在线答题功能
2015/04/25 HTML / CSS
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
文艺晚会主持词
2014/03/24 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
三八妇女节新闻稿
2015/07/17 职场文书
小学主题班会教案
2015/08/17 职场文书
安全生产学习心得体会
2016/01/18 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书