python正则表达式的懒惰匹配和贪婪匹配说明
作者:Shine_on_the_earth 发布时间:2021-06-18 18:05:51
标签:python,懒惰匹配,贪婪匹配
第一次碰到这个问题的时候,确实不知道该怎么办,后来请教了一个大神,加上自己的理解,才了解是什么意思,这个东西写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生成指定数量的优惠码打开Python开发工具IDLE,新建‘codeGen.py'文件,并保存导入需要的包,这里需要ra
- 现在Go1.14都已经发布好些日子了,之前发的Go环境搭建教程早已过时,只是因为时间问题一直没来得及更新这次怀着愧疚的心情,在凌晨四点时,将
- 一、媒体管道1.1、媒体管道的特性媒体管道实现了以下特性:避免重新下载最近下载的媒体指定存储位置(文件系统目录,Amazon S3 buck
- 话不多说,先上效果,一个体验非常好的拖拽缓动的效果,让页面提升一个档次。这个效果看似很简单,到也困惑了很长时间,为什么别人写出来的拖拽体验为
- github是一个项目的存储仓库,使用的时候非常的方便,下面就介绍一下管理 github 仓库的软件安装,windows 下的 git 安装
- 1.算法概述决策树算法是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策
- 如何使DIV居中,div垂直居中,div水平居中.这个问题在用CSS来设计网页的时候经常会遇到,如果用传统的表格来布局是很简单的,CSS里就
- 前言Python 是一种面向对象的、解释型的、通用的、开源的脚本编程语言。现在市面上 Python 非常的流行,主要是因为它简单易用,学习成
- 前言如题目所述,又是花费了两天的时间实现了该功能,本来今天下午有些心灰意冷,打算放弃嵌入到Scoll Area中的想法,但最后还是心里一紧,
- python实现学员管理系统这个小程序是我刚刚接触python时,导师带着做的第一个小项目。通过这次练习,我学会了很多东西。下面是具体的代码
- 我就废话不多说了,直接上代码吧!def _int_iter(): """根据回文数的定义。首先生成
- python为main方法传参执行python脚本的时候,想给main方法传入参数的例子#!/usr/bin/env python# -*-
- 导语嘿!大家好,我是木木子!今天给大家带来一个好玩儿的Python小程序,希望大家喜欢,记得点点关注啦~有没有什么内容形式,比小视频更小,比
- <script type="text/javascript"> </script>
- pytorch报错:RuntimeError: Expected object of type Variable[torch.LongTen
- 本文实例讲述了MySQL自定义函数用法。分享给大家供大家参考,具体如下:先来一个简单的,创建一个函数将'2009-06-23 00:
- LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据
- 游戏介绍先看看界面这是一个拼图游戏,可以自选难度和自选闯关图片游戏开始后根据不同难度,生成与所选主图 对应的 不同张数的 随机顺序的小图,然
- 前言在字典中查找某一个值的时候,若key不存在就会返回一个keyerror错误而不是一个默认值,如果想要返回一个默认值可以使用default
- 1.背景最近使用Pytest中的fixture和conftest时,遇到需要在conftest中的setup和teardown方法里传递参数