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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
儿童编程python入门
May 08 Python
关于Python的一些学习总结
May 25 Python
python 从csv读数据到mysql的实例
Jun 21 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
Python如何执行精确的浮点数运算
Jul 31 Python
python上下文管理器异常问题解决方法
Feb 07 Python
python实现图片九宫格分割的示例
Apr 25 Python
python opencv人脸识别考勤系统的完整源码
Apr 26 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
Memcache 在PHP中的使用技巧
2010/02/08 PHP
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
2017/06/07 PHP
Jquery 复选框取值兼容FF和IE8(测试有效)
2013/10/29 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
JS的数组迭代方法
2015/02/05 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
JQuery Ajax如何实现注册检测用户名
2020/09/25 jQuery
Python使用pyexecjs代码案例解析
2020/07/13 Python
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
建筑施工实习自我鉴定
2013/09/19 职场文书
战友聚会策划方案
2014/06/13 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
项目合作协议书
2014/09/23 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
求职导师推荐信范文
2015/03/27 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
某某幼儿园的教育教学管理调研分析报告
2019/11/29 职场文书
pytorch加载预训练模型与自己模型不匹配的解决方案
2021/05/13 Python
python基础之类属性和实例属性
2021/10/24 Python
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android