python正则表达式的懒惰匹配和贪婪匹配说明
作者:Shine_on_the_earth 时间:2021-06-18 18:05:51
第一次碰到这个问题的时候,确实不知道该怎么办,后来请教了一个大神,加上自己的理解,才了解是什么意思,这个东西写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)
测试结果:
结果分析:
懒惰匹配,匹配成功两次,一次abcd,一次acsd,匹配到满足条件的abcd就停止了此次匹配,不会干扰后面的继续匹配。
贪婪匹配,匹配成功一次,只有abcdacsd,匹配到字符串后,会最大限度的占用字符串
以上两种,一个是尽量匹配最短串,一个是匹配最长串。
补充知识:python正则匹配中贪婪匹配效率比较
用例回归完成之后,一般都要生成一个summary_report.但是,发现生成报告的时间耗时很久,搜集资料发现与匹配文件内容使用的正则表达式有很大关系.
1.匹配模式说明
下图中圈住的部分,没有注释掉的使用贪婪匹配,注释掉的使用非贪婪匹配
执行时间上二者差别巨大;另外执行时间与正则表达式的长度也有关系,较长的表达式建议分段匹配.
2.贪婪匹配时间
3.非贪婪匹配时间
来源:https://blog.csdn.net/weixin_40251830/article/details/80222017
标签:python,懒惰匹配,贪婪匹配
0
投稿
猜你喜欢
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2022-06-03 19:54:30
Python爬虫小练习之爬取并分析腾讯视频m3u8格式
2022-07-03 08:44:32
SQL Server实现分布式数据库系统的终极目标
2010-08-05 14:57:00
MySQL8.0.32安装及环境配置过程
2024-01-19 03:20:49
python批量修改xml文件中的信息
2022-03-29 22:50:53
最强大最好最全的javascript 验证表单的例子
2010-03-14 11:26:00
MySQL 8.0.12的安装与卸载教程详解
2024-01-25 23:36:58
MySQL忘记root密码错误号码1045的解决办法
2024-01-20 17:00:43
Python3中的最大整数和最大浮点数实例
2021-04-05 01:37:16
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2022-03-17 20:04:01
win10系统下Anaconda3安装配置方法图文教程
2022-08-06 23:01:49
Dreamweaver的CSS布局ul和li范例
2009-08-28 12:34:00
Access 导入 MSSQL 2000/2005 数据库工具
2008-10-22 13:49:00
Python之多线程爬虫抓取网页图片的示例代码
2021-09-01 18:55:03
10张动图学会python循环与递归问题
2023-08-23 10:55:42
SQL2000 事务回滚问题探讨
2024-01-26 19:58:37
SQL中DATEADD和DATEDIFF的用法示例介绍
2024-01-27 16:57:58
利用标准库fractions模块让Python支持分数类型的方法详解
2023-06-06 05:23:47
详解python 条件语句和while循环的实例代码
2023-11-19 11:32:58
解决PDF 转图片时丢文字的一种可能方式
2022-06-12 18:29:38