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

 更新时间:2020年07月13日 10:44:33   作者:Shine_on_the_earth  
这篇文章主要介绍了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.非贪婪匹配时间

以上这篇python正则表达式的懒惰匹配和贪婪匹配说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python多线程操作之互斥锁、递归锁、信号量、事件实例详解

    Python多线程操作之互斥锁、递归锁、信号量、事件实例详解

    这篇文章主要介绍了Python多线程操作之互斥锁、递归锁、信号量、事件,结合实例形式详细分析了Python多线程操作互斥锁、递归锁、信号量、事件相关概念、原理、用法与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • Python工程实践之np.loadtxt()读取数据

    Python工程实践之np.loadtxt()读取数据

    为了方便使用和记忆,有时候我们会把numpy.loadtxt()缩写成np.loadtxt(),这篇文章主要给大家介绍了关于Python工程实践之np.loadtxt()读取数据的相关资料,需要的朋友可以参考下
    2023-07-07
  • Python如何对图像补全并分割成多块补丁

    Python如何对图像补全并分割成多块补丁

    这篇文章主要介绍了Python如何对图像补全并分割成多块补丁,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 通过Python的speech_recognition库将音频文件转为文字

    通过Python的speech_recognition库将音频文件转为文字

    recognize_google() 是Google提供的一种语音识别API,可以识别音频文件或麦克风录制的语音,并将其转换为文本,这篇文章主要介绍了通过Python的speech_recognition库将音频文件转为文字,需要的朋友可以参考下
    2023-05-05
  • python数字图像处理之基本图形的绘制

    python数字图像处理之基本图形的绘制

    这篇文章主要为大家介绍了python数字图像处理之基本图形的绘制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • python脚本实现xls(xlsx)转成csv

    python脚本实现xls(xlsx)转成csv

    这篇文章主要介绍了python脚本实现xls(xlsx)转成csv的相关资料,需要的朋友可以参考下
    2016-04-04
  • python超详细实现完整学生成绩管理系统

    python超详细实现完整学生成绩管理系统

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用Java实现一个完整版学生成绩管理系统,大家可以在过程中查缺补漏,提升水平
    2022-03-03
  • 一文带你了解Python闭包的基本用法

    一文带你了解Python闭包的基本用法

    Python 是一种高级编程语言,拥有强大的功能和工具库。Python 的闭包是一个强大的编程概念,可以帮助程序员编写更加模块化、可重用的代码。本文将深入介绍 Python 的闭包,从概念、定义、实现、应用等多个角度详细阐述
    2023-03-03
  • python查看FTP是否能连接成功的方法

    python查看FTP是否能连接成功的方法

    这篇文章主要介绍了python查看FTP是否能连接成功的方法,实例分析了Python连接FTP的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • python怎样更加简洁的解决小明种苹果

    python怎样更加简洁的解决小明种苹果

    这篇文章主要介绍了python怎样更加简洁的解决小明种苹果。想了解数据结构和算法的同学,可以参考下
    2021-04-04

最新评论