在《第11.8节 Pytho正则表达式的重复匹配模式及元字符“?”、 “”、 “+”功能介绍》和《第11.10节 Pytho正则表达式的非贪婪模式的重复匹配:’?’, ‘+?’,和 ‘??’ 》中介绍了’’、’?’、’+’、’+?’、 ‘?’、 '??'是重复匹配,包括:0-1次、0-n次、1-n次,在Python中还可以通过元字符描述符“{}”(大括号)指定重复的最大次数和最小次数。语法如下:

{m}:匹配的模式串重复m次

{m,n}:匹配的模式串至少重复m次,最多重复n次,如果没有m则等同于m=0,没有n则等同于n为无穷大。如a{,5}等同于a{0,5}表示a最多重复5次,可以一次也不出现。{m,n}这种匹配修饰符是贪婪模式的重复匹配,即尽可能按最大值n进行重复匹配。

{m,n}?:是{m,n}模式的非贪婪模式,即按最小值m进行重复匹配,其他与{m,n}相同。按最小值m进行重复匹配并不意味着n的值没有意义,当该修饰符后还有其他匹配模式子串时,为了支持后续子模式的匹配可能需要支持大于m次的匹配。

案例:

>>> re.search('[1-9]{2,10}','12345678abc')  #贪婪模式匹配,将所有数字都匹配了
<re.Match object; span=(0, 8), match='12345678'>
>>> re.search('[1-9]{2,10}?','12345678abc') #非贪婪模式匹配,匹配最少量数字
<re.Match object; span=(0, 2), match='12'>
>>> re.search('[1-9]{2,10}?abc','12345678abc') #非贪婪模式匹配但要匹配完整模式因此将所有数字都匹配了
<re.Match object; span=(0, 11), match='12345678abc'>
>>> re.search('[1-9]{2,5}?abc','12345678abc') #非贪婪模式匹配,但为整体匹配按最大量匹配数字
<re.Match object; span=(3, 11), match='45678abc'>
>>>

老猿Python,跟老猿学Python!

博客地址:https://blog.csdn.net/LaoYuanPython


请大家多多支持,点赞、评论和加关注!谢谢!

第11.11节 Python正则表达式的指定重复次数匹配模式及元字符”{}”功能介绍的更多相关文章

  1. 第11.7节 Python正则表达式的字符串结尾匹配模式及元字符“$”功能介绍

    符号"$"表示匹配字符串的结尾,即字符串的结尾满足匹配模式的要求. 在 MULTILINE 模式(搜索标记中包含re.MULTILINE,关于搜索标记的含义请见<第11.2节 ...

  2. 第11.25节 Python正则表达式编译re.compile及正则对象使用

    一. 引言 在<第11.2节 Python 正则表达式支持函数概览>介绍了re模块的主要函数,在<第11.3节 Python正则表达式搜索支持函数search.match.fullm ...

  3. 第11.13节 Python正则表达式的转义符”\”功能介绍

    为了支持特殊元字符在特定场景下能表示自身而不会被当成元字符进行匹配出来,可以通过字符集或转义符表示方法来表示,字符集表示方法前面在<第11.4节 Python正则表达式搜索字符集匹配功能及元字符 ...

  4. 第11.15节 Python正则表达式转义符定义的特殊序列

    一. 引言 在前面<第11.13节 Python正则表达式的转义符"\"功能介绍>介绍了正则表达式转义符'\',只不过当时作为转义符主要是用于在正则表达式中表示元字符自 ...

  5. 第11.6节 Python正则表达式的字符串开头匹配模式及元字符“^”(插入符、脱字符)功能介绍

    符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而m ...

  6. 第11.5节 Python正则表达式搜索任意字符匹配及元字符“.”(点)功能介绍

    在re模块中,任意字符匹配使用"."(点)来表示, 在默认模式下,点匹配除了换行的任意字符.如果指定了搜索标记re.DOTALL ,它将匹配包括换行符的任意字符.关于搜索标记的含义 ...

  7. 第11.10节 Python正则表达式的非贪婪模式的重复匹配:'*?', '+?',和 '??'

    在<第11.9节 Pytho正则表达式的贪婪模式和非贪婪模式>老猿简单介绍了贪婪模式和非贪婪模式,并说明'', '+',和 '?' 修饰符都是 贪婪的:它们在字符串进行尽可能多的匹配.有时 ...

  8. 第11.9节 Python正则表达式的贪婪模式和非贪婪模式

    在使用正则表达式时,匹配算法存在贪婪模式和非贪婪模式两种模式,在<第11.8节 Pytho正则表达式的重复匹配模式及元字符"?". "*". " ...

  9. 第11.17节 Python 正则表达式扩展功能:命名组功能及组的反向引用

    一. 引言 在<第11.16节 Python正则元字符"()"(小括号)与组(group)匹配模式>介绍了组匹配模式,在一个正则表达式内可以定义多个组,每个组都有一个顺 ...

随机推荐

  1. IT人必知,互联网主流商业模式

    最近关注互联网电商营销相关方面的知识,对商业化和流量变现有了一些认知. 熟悉的朋友知道,写文章是我学习的一种方式,输出倒逼输入,继而强化知识体系,所以也把这段时间的输入,自顶向下做一个系列的分享. 对 ...

  2. C++ 设计模式 2:创建型模式

    0 创建型模式 这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象.这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活. 1 简单工厂模式 简单 ...

  3. 内网渗透 day2-nmap和nc的使用

    nmap和nc的使用 nmap的使用 1. nmap -sSV 172.16.100.214 -T4 -F -sS进行SYN扫描,是比较隐匿的 -sV探测打开端口的服务的信息 -sSV将上面两种一起使 ...

  4. 论文阅读:Learning Attention-based Embeddings for Relation Prediction in Knowledge Graphs(2019 ACL)

    基于Attention的知识图谱关系预测 论文地址 Abstract 关于知识库完成的研究(也称为关系预测)的任务越来越受关注.多项最新研究表明,基于卷积神经网络(CNN)的模型会生成更丰富,更具表达 ...

  5. [MIT6.006] 8. Hashing with Chaining 散列表

    一.字典 在之前课里,如果我们要实现插入,删除和查找,使用树结构,最好的时间复杂度是AVL下的Ο(log2n),使用线性结构,最好的复杂度为基数排序Ο(n).但如果使用字典数据类型去做,时间复杂度可为 ...

  6. C++ 中表达式求值

    首先我们来看一段代码: int a() { return std::puts("a"); } int b() { return std::puts("b"); ...

  7. 多项目部署在同一个GitHub Pages

    由于GitHub 的约定,一个账户只能拥有一个GitHub Pages,那么,如果你有多个想部署的静态网站(博客和文档等),它们是互相隔离的,如何用同一个GitHub账户进行部署呢? 从之前如何搭建G ...

  8. idea开发工具下,进行多个线程切换调试

  9. bWAPP----Mail Header Injection (SMTP)

    Mail Header Injection (SMTP) 本地没有搭环境,没法演示,附上转载的 https://www.acunetix.com/blog/articles/email-header- ...

  10. linux的time命令

    查看程序执行时间