python正则表达式中匹配次数与贪心问题详解(+ ?*)
作者:Lynnlc2020 发布时间:2021-04-24 20:52:04
python中正则表达式中的匹配次数问题网上有很多解释,最多的就是*匹配0或者无数次,+匹配1次或无数次,?匹配0次或者1次。可是虽然这个文字描述很简单,但是真正用起来的时候大家有没有发觉还是需要谨慎使用才能发挥出这个匹配次数的真正功能,下面举几个简单例子参考:
首先是一个很简单的匹配:
字符串如下
我们直接匹配python,结果只匹配到一个
接下来我们把匹配次数的符号加进去,首先是*,结果如下:
匹配到了三处,即匹配到了所有的前缀有python的字符串
换成+再次匹配
结果和*的匹配一致,那使用过程中能否把*和+混用呢,后面我们会继续探讨,接下来看?的匹配结果:
结果只匹配到python,匹配到三次。
根据这三个字符的匹配规则,我们知道?是0次或1次,+是1次或无数次,*是0次或无数次,而?是属于非贪心匹配,*和+属于贪心匹配,所以可以解释?只匹配到python,因为0次匹配的时候就出结果了,所以它就立刻会终止匹配输出结果!
+是贪心匹配,它的结果和*是一样的,但是它和*最大的区别是不接受0次 匹配!所以当我们把匹配的关键字改变的时候,三者的结果就会截然不同:
童鞋们,看到 了吗,这次输出的结果和之前完全不同,我们可以根据之前所述的匹配规则进行解释:
1.+号的匹配为贪心,匹配次数只接受一次或者多次,此时pythonn+中的红色n如果出现在python后面出现一次的时候,立刻返回匹配成功的值,同时由于是贪心匹配,在python后面出现两个n的时候,也会返回匹配成功的值。当n为零次的时候,python是不会有返回值的!
2.*号的匹配为贪心,匹配次数接受零次一次或者多次,此时pythonn+中的红色n如果出现在python后面出现零次的时候,立刻返回匹配成功的值,同时由于是贪心匹配,在python后面出现一个n,两个n的时候,也会返回匹配成功的值。
3.?号的匹配为非贪心,匹配次数只接受零次或者一次,同时如果零次满足,则一次匹配不再继续。pythonn+中的红色n如果出现在python后面出现零次的时候,立刻返回匹配成功的值,同时由于是非贪心匹配,在python后面出现一个或者两个n的时候,也不会匹配。
所以搞懂了什么是贪心,什么是非贪心,什么是一次匹配多次匹配之后我们就可以灵活运用了:
比如下述的例子,在*和+后面加上?就是把贪心匹配更改为非贪心:
*号后面加?变成非贪心,匹配0次成功就会退出匹配
+号后面加上?变成贪心,匹配1次成功就会推出匹配
来源:https://blog.csdn.net/Lynnlc2020/article/details/120055209
猜你喜欢
- 1、标识符与关键字在了解数据类型之前,先了解一下go的标识符和关键字1.1 标识符在编程语言中标识符就是定义的具有某种意义的词,比如变量名、
- 对于python的tkinter库来说,如果需要弹出文件选择框,我们需要引入一下tkinter.filedialog包,让用户直观地先择一个
- HTTP_X_FORWARDED_FOR与REMOTE_ADDR的区别.在Request.ServerVariables中并没有HTTP_X
- 已经11月了,不知道还有没有人看华强买瓜。。。要把华强卖瓜做成字符视频,总共分为三步读取视频把每一帧转为字符画把字符画表现出来 读
- 相比于2018年,在ICLR2019提交论文中,提及不同框架的论文数量发生了极大变化,网友发现,提及tensorflow的论文数量从2018
- 本文实例为大家分享了python图形用户接口实例的具体代码,供大家参考,具体内容如下运用tkinter图形库,模拟聊天应用界面,实现信息发送
- 本文实例讲述了php实现的支持断点续传的文件下载类及其用法,是非常实用的技巧。分享给大家供大家参考。具体方法如下:通常来说,php支持断点续
- 我的测试环境是2000sever ie6.0+sp4 MYIE1.31 (成功通过测试)关闭窗口的途径常用4种:1.双击左上角图标2.直接双
- 这篇文章主要介绍了Python实现word2Vec model过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- CONVERT将某种数据类型的表达式显式转换为另一种数据类型。由于某些需求经常用到取日期格式的不同.现以下可在SQL Server中将日期格
- 本文实例讲述了Python列表解析操作。分享给大家供大家参考,具体如下:列表解析Python 的强大特性之一是其对 list 的解析,它提供
- 本文实例讲述了scrapy自定义pipeline类实现将采集数据保存到mongodb的方法。分享给大家供大家参考。具体如下:# Standa
- 这是我研究网页切片算法的一个汇总想法。之前我写过:一种面向搜索引擎的网页分块、切片的原理,实现和演示,随着工作的深入,逐渐碰到以
- 开发工具python版本:3.6.4相关模块:pygame;以及一些python自带的模块。环境搭建安装python并添加到环境变量,pip
- 个人觉得还是不要使用中文作为文件名的好,虽然我们用的语言是中文,毕竟中文容易出现问题,兼容性不好。用Dreamweaver制作网页时,如果插
- MooTools 1.2的整理排序类Sortables原文地址:30 Days of Mootools 1.2 Tutorials - Da
- 当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同
- 写ASP程序时,一般情况总是使用的VBScript,不过也不只是这一种选择,也可以用JScript。但在用JScript作为ASP的语言时,
- 如果你想让你的IIS支持wml,做个wap网站,只需作小小的改变就行了.虽然目前支持wml的虚拟主机极少,但是自己在本机上玩玩也好的.首先在
- 对于python2.7字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,