前言

本文主要给大家介绍了关于python使用正则表达式的非贪婪模式的相关内容,分享出来供大家参考学习,下面话不多说了,来一起详细的介绍吧。

在正则表达式里,什么是正则表达式的贪婪与非贪婪匹配

如:String str="abcaxc";

Patter p="ab*c";

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(ab*c)。

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。

解决这个问题,可以采用:

正则引擎默认是贪婪的,当出现"*"时,它会尽量去匹配尽可能长的字符串。

一个用于修正以上问题的可能方案是用"*"的惰性代替贪婪性。你可以在"*"后面紧跟一个问号"?"来达到这一点

这告诉正则引擎,尽可能少的重复上一个字符。

如下面的例子:

#python 3. 6

#蔡军生

#http://blog.csdn.net/caimouse/article/details/51749579

#

from re_test_patterns import test_patterns

test_patterns(

'abbaabbba',

[('ab*?', 'a followed by zero or more b'),

('ab+?', 'a followed by one or more b'),

('ab??', 'a followed by zero or one b'),

('ab{3}?', 'a followed by three b'),

('ab{2,3}?', 'a followed by two to three b')],

)

输出结果如下:

'ab*?' (a followed by zero or more b)

'abbaabbba'

'a'

...'a'

....'a'

........'a'

'ab+?' (a followed by one or more b)

'abbaabbba'

'ab'

....'ab'

'ab??' (a followed by zero or one b)

'abbaabbba'

'a'

...'a'

....'a'

........'a'

'ab{3}?' (a followed by three b)

'abbaabbba'

....'abbb'

'ab{2,3}?' (a followed by two to three b)

'abbaabbba'

'abb'

....'abb'

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对聚米学院的支持。

python 正则表达式 非贪婪,python中如何使用正则表达式的非贪婪模式示例相关推荐

  1. python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例

    本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...

  2. python 设置全局代理_Python中使用socks5设置全局代理的方法示例

    0x01介绍 PySocks使您可以通过SOCKS和HTTP代理服务器发送流量.它是SocksiPy的现代分支,具有错误修复和其他功能. 0x02 安装 λ pip3 install Pysocks ...

  3. python协程库_python中协程的详解(附示例)

    本篇文章给大家带来的内容是关于python中协程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程,又称微线程,纤程.英文名Coroutine 协程看上去也是子程序 ...

  4. python应用系列教程——python使用scapy监听网络数据包、按TCP/IP协议进行解析

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 docker/kubernetes入门视频教程 全栈工程师开发手册 (作者:栾鹏) pyth ...

  5. 二叉树的层序遍历,前序遍历(递归,非递归),中序遍历(递归,非递归),后续遍历(递归,非递归)

    文章目录 二叉树的层序遍历 前序遍历 递归版本 非递归版本 中序遍历 递归版本 非递归版本 后序遍历 递归版本 非递归版本 二叉树的层序遍历 void printTree(BinaryTree* ar ...

  6. python非贪婪、多行匹配正则表达式例子[转载]

    python非贪婪.多行匹配正则表达式例子[转载] 一些regular的tips: 1 非贪婪flag >>> re.findall(r"a(\d+?)", &q ...

  7. 在python中,用正则表达式提取多层括号中最外层括号包含的内容

    提取多层括号中最外层括号包含的内容有几种方式,那么用正则表达式该怎么实现呢? 在python中,用正则表达式提取多层括号中最外层括号包含的内容 比如有一个字符串 : 学习python中有什么不懂的地方 ...

  8. python基础系列教程——python中的字符串和正则表达式全解

    全栈工程师开发手册 (作者:栾鹏) python教程全解 转义字符 正则表达式是建立在字符串的基础上,当需要在字符中使用特殊字符时,python用反斜杠\转义字符.如下表: 转义字符 描述\(在行尾时 ...

  9. python中的正则表达式re模块_Python中的re模块--正则表达式

    Python中的re模块--正则表达式 使用match从字符串开头匹配 以匹配国内手机号为例,通常手机号为11位,以1开头.大概是这样13509094747,(这个号码是我随便写的,请不要拨打),我们 ...

  10. python 正则表达式 前瞻_我应该如何在python中编写这个正则表达式(How should I write this regex in python)...

    我应该如何在python中编写这个正则表达式(How should I write this regex in python) 我有字符串. st = "12345 hai how r u ...

最新文章

  1. R语言ggplot2可视化分组散点图、将图例放置在图像内部的指定区域、自定义缩放图例中点形状pch的大小(增大或者缩小)、change size of shape elements
  2. python安装第三方库win10_在win里anaconda怎么安装第三方的库
  3. php数组地址,怎么实现javascript数组与php数组的地址传递
  4. python实现监控电脑打开网页_Python轻松实现动态网页爬虫(附详细源码)
  5. linux学习-简单命令介绍及安装VMware Tools
  6. 外挂编程-动作模拟技术
  7. Java虚拟机------垃圾收集器
  8. 解决“HTTP Error 401 – Unauthorized”
  9. [数学建模]数学规划模型
  10. SwiftUI iOS 精品开源之 具有货币转换功能的iOS计算器 网络后端汇率API (教程含源码)
  11. ”小糊涂“与美女网站的收费机制
  12. Setup failed. At least windows8.1 or windows serve2012 are reguired to install python 3.10.1(64-bit)
  13. 统计一篇英文文章中26 字母出现的概率
  14. 服务器获取真实客户端 IP
  15. WY C语言入门(5)
  16. 保研文书——中文简历
  17. windows server 2012R组策略
  18. 北京理工大学计算机山西录取位次,北京理工大学录取分数线排名
  19. 毕业设计-基于SpringBoot实验室预约管理系统
  20. 界面设计的八条黄金法则

热门文章

  1. python推荐系统酒店_PCA实现一个简单的酒店推荐系统(附Python源码)
  2. Sql批量替换某张表中某个字段的某个数值
  3. sql~~~~~~~~
  4. 3种常用的文件上传方式
  5. 2023心理咨询师报名需要什么条件 有哪些要求
  6. OpenWrt 概述与快速入门
  7. 表单提交和超链接请求传递参数的几种方式
  8. 高并发大流量情况下带来的海量数据分库分表的正确姿势
  9. HDU 3363 冰糖葫芦
  10. 联机检查解决方案并关闭程序-解决方法