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之通过Python连接数据库
Oct 28 Python
Python中type的构造函数参数含义说明
Jun 21 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
python模块之time模块(实例讲解)
Sep 13 Python
Python针对给定列表中元素进行翻转操作的方法分析
Apr 27 Python
python中reader的next用法
Jul 24 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
Python实现实时数据采集新型冠状病毒数据实例
Feb 04 Python
详解Scrapy Redis入门实战
Nov 18 Python
python3爬虫中引用Queue的实例讲解
Nov 24 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/06/06 PHP
php中JSON的使用方法
2015/04/30 PHP
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
掌握PHP垃圾回收机制详解
2019/03/13 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
全屏滚动插件fullPage.js使用实例解析
2016/10/21 Javascript
JavaScript中三种常见的排序方法
2017/02/24 Javascript
vuejs手把手教你写一个完整的购物车实例代码
2017/07/06 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
2018/06/14 Javascript
vue视频播放插件vue-video-player的具体使用方法
2019/11/08 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python中的列表知识点汇总
2015/04/14 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
家长会学生演讲稿
2014/04/26 职场文书
高中社区服务活动报告
2015/02/05 职场文书
创业计划书之餐饮馄饨店
2019/07/18 职场文书
导游词之介休绵山
2019/12/31 职场文书
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android
Python利用FlashText算法实现替换字符串
2022/03/31 Python
Java十分钟精通进阶适配器模式
2022/04/06 Java/Android
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技