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 19 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
Django 生成登陆验证码代码分享
Dec 12 Python
Python实现提取XML内容并保存到Excel中的方法
Sep 01 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
python读取mysql数据绘制条形图
Mar 25 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Python while true实现爬虫定时任务
Jun 08 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
详解Selenium 元素定位和WebDriver常用方法
Dec 04 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
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP常用工具类大全附全部代码下载
2015/12/07 PHP
Smarty保留变量用法分析
2016/05/23 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
JavaScript实现判断图片是否加载完成的3种方法整理
2015/03/13 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
vue 实现路由跳转时更改页面title
2019/11/05 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
基于numpy中数组元素的切片复制方法
2018/11/15 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
Python timeit模块的使用实践
2020/01/13 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
花坛标语大全
2014/06/30 职场文书
严以用权学习心得体会
2016/01/12 职场文书
golang中的struct操作
2021/11/11 Golang