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)

测试结果:

python正则表达式的懒惰匹配和贪婪匹配说明

结果分析:

懒惰匹配,匹配成功两次,一次abcd,一次acsd,匹配到满足条件的abcd就停止了此次匹配,不会干扰后面的继续匹配。

贪婪匹配,匹配成功一次,只有abcdacsd,匹配到字符串后,会最大限度的占用字符串

以上两种,一个是尽量匹配最短串,一个是匹配最长串。

补充知识:python正则匹配中贪婪匹配效率比较

用例回归完成之后,一般都要生成一个summary_report.但是,发现生成报告的时间耗时很久,搜集资料发现与匹配文件内容使用的正则表达式有很大关系.

1.匹配模式说明

下图中圈住的部分,没有注释掉的使用贪婪匹配,注释掉的使用非贪婪匹配

python正则表达式的懒惰匹配和贪婪匹配说明

执行时间上二者差别巨大;另外执行时间与正则表达式的长度也有关系,较长的表达式建议分段匹配.

2.贪婪匹配时间

python正则表达式的懒惰匹配和贪婪匹配说明

3.非贪婪匹配时间

python正则表达式的懒惰匹配和贪婪匹配说明

来源: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
  • asp之家 网络编程 m.aspxhome.com