当前位置: 首页 > news >正文

python贪婪匹配顺序_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_你如何理解“世界上最美丽的语言是微笑”,要求是一篇3分钟的即兴评述,...
  • C++箴言:避免析构函数调用虚函数
  • sql 比较两个时间_73找到业务高峰时段的sql示例(报表开发类)
  • 与全局变量构造析构顺序有关的一道面试题(C++)
  • sql 让每行显示两次_SQL基础-复杂查询
  • 关于Symbian的程序已经关闭错误
  • led灯条维修_格栅屏和普通屏的区别?LED格栅屏是如何防水的
  • 时间条控件制作简明教程
  • python asyncio socket_用python asyncio写一个MMO(2)
  • 深入理解Symbian控件架构
  • Symbian程序图标问题
  • 无符号数相减_关于超自然数的构造——非标准分析
  • ListBox控件
  • 分析称2007年IT巨头将争夺三大领域
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • C++类中的特殊成员函数
  • gops —— Go 程序诊断分析工具
  • Java Agent 学习笔记
  • JavaScript标准库系列——Math对象和Date对象(二)
  • nodejs实现webservice问题总结
  • React 快速上手 - 07 前端路由 react-router
  • tensorflow学习笔记3——MNIST应用篇
  • vue.js框架原理浅析
  • 成为一名优秀的Developer的书单
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 简单数学运算程序(不定期更新)
  • 栈实现走出迷宫(C++)
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • $NOIp2018$劝退记
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (C语言)fread与fwrite详解
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转载)虚函数剖析
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET中两种OCR方式对比
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Bean注解详解
  • @RequestMapping处理请求异常
  • []FET-430SIM508 研究日志 11.3.31
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [AIGC 大数据基础]hive浅谈
  • [Angular] 笔记 16:模板驱动表单 - 选择框与选项