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守护进程(daemon)代码实例
Mar 06 Python
详解Python中time()方法的使用的教程
May 22 Python
python+Django+apache的配置方法详解
Jun 01 Python
python 查找字符串是否存在实例详解
Jan 20 Python
python获取文件真实链接的方法,针对于302返回码
May 14 Python
python 移除字符串尾部的数字方法
Jul 17 Python
matplotlib给子图添加图例的方法
Aug 03 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Python如何重新加载模块
Jul 29 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
Python基本数据类型之字符串str
Jul 21 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中通过数组进行高效随机抽取指定条记录的算法
2013/09/09 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
2014/12/17 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
3种php生成唯一id的方法
2015/11/23 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
jquery的extend和fn.extend的使用说明
2011/01/09 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
Python中分数的相关使用教程
2015/03/30 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
Python 如何测试文件是否存在
2020/07/31 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
任意存:BOXFUL
2018/05/21 全球购物
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
建筑公司文秘岗位职责
2013/11/29 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
实习单位证明范例
2014/11/17 职场文书
结婚保证书
2015/01/16 职场文书
杜甫草堂导游词
2015/02/03 职场文书
出国导师推荐信
2015/03/25 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
三方合作意向书范本
2015/05/09 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
redis lua限流算法实现示例
2022/07/15 Redis