python正则表达式中匹配次数与贪心问题详解(+ ?*)

 更新时间:2022年10月10日 09:34:07   作者:Lynnlc2020  
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,下面这篇文章主要给大家介绍了关于python正则表达式中匹配次数与贪心问题(+ ?*)的相关资料,需要的朋友可以参考下

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次成功就会推出匹配

总结

到此这篇关于python正则表达式中匹配次数与贪心问题详解(+ ?*)的文章就介绍到这了,更多相关python正则匹配次数与贪心问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 两个元祖T1=(''a'', ''b''),T2=(''c'', ''d'')使用匿名函数将其转变成[{''a'': ''c''},{''b'': ''d''}]的几种方法

    两个元祖T1=(''a'', ''b''),T2=(''c'', ''d'')使用匿名函数将其转变成[{''a'': '

    今天小编就为大家分享一篇关于两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 零基础学Python(一)Python环境安装

    零基础学Python(一)Python环境安装

    本文是此系列的第一篇,所以开始先胡扯一番,然后再分别介绍LINUX系统,windows系统,MAC系统下如何安装Python环境,希望对大家有所帮助
    2014-08-08
  • python中的flask框架Jinja 模板入门教程

    python中的flask框架Jinja 模板入门教程

    这篇文章主要介绍了 python中的flask框架Jinja 模板入门,Jinja 模板其实是 html 文件,一般情况下放在 Flask 工程的 /templates 目录下,对python flask Jinja 模板相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • 使用python实现kNN分类算法

    使用python实现kNN分类算法

    这篇文章主要为大家详细介绍了使用python实现kNN分类算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • 浅谈Python中range与Numpy中arange的比较

    浅谈Python中range与Numpy中arange的比较

    这篇文章主要介绍了浅谈Python中range与Numpy中arange的比较,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 图解Python中浅拷贝copy()和深拷贝deepcopy()的区别

    图解Python中浅拷贝copy()和深拷贝deepcopy()的区别

    这篇文章主要介绍了Python中浅拷贝copy()和深拷贝deepcopy()的区别,浅拷贝和深拷贝想必大家在学习中遇到很多次,这也是面试中常常被问到的问题,本文就带你详细了解一下
    2023-05-05
  • 使用matplotlib画图之坐标轴不等距

    使用matplotlib画图之坐标轴不等距

    这篇文章主要介绍了使用matplotlib画图之坐标轴不等距方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python 三元运算符使用解析

    python 三元运算符使用解析

    这篇文章主要介绍了python 三元运算符使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 使用Python pyWinAuto库自动化Windows任务的示例代码

    使用Python pyWinAuto库自动化Windows任务的示例代码

    pywinauto是Python的一个强大的自动化库,它可以用于控制Windows应用程序的用户界面,本文将详细介绍pywinauto库的安装、基本用法和高级应用,以便你能够更好地了解如何使用它来自动化Windows应用程序,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-11-11
  • Python内置函数 next的具体使用方法

    Python内置函数 next的具体使用方法

    这篇文章主要介绍了Python内置函数 next的具体使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11

最新评论