例子:匹配 HTML 标签

贪婪匹配: <.+>

懒惰匹配: <.+?>

我们发现第二种 懒惰匹配才是我们想要的结果

字符" ? " : 如果紧跟在任何量词 *、 +、? 或 {} 的后面,将会使量词变为非贪婪(懒惰匹配,匹配尽量少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。例如,对 “123abc” 使用 /\d+/ 将会匹配 “123”,而使用 /\d+?/ 则只会匹配到 “1”。

分析匹配 HTML 标签的例子:
贪婪匹配:<.+> 表示匹配 符号 “<” 和符号 ">"之间的任意字符,且任意字符数大于0 。因为是尽可能多的匹配,所以当匹配的时候发现整个标签 “ <div><span>我要匹配HTML标签</span></div> ”是符合要求的,所以就是匹配所有。

懒惰匹配:<.+?> 表示匹配 符号 “<” 和符号 ">"之间的任意字符,且任意字符数大于0 。因为是尽可能少的匹配,所以当匹配的时候发现标签 “ <div> ”已经是符合要求的,所以会匹配<div>标签,然后继续向下匹配,发现<span>标签也是符合要求的,继续向下匹配,发现文字不符合要求,继续向下,发现</span>和</div>标签都是符合要求的,所以最后会匹配 <div>, <span>, </span>, </div>四个标签

再看个例子: 字符串 abcdssaxd
贪婪匹配:<a.+d> 会匹配整个字符串

懒惰匹配:<a.+?d> 匹配 abcd 和 axd

懒惰匹配,匹配到满足条件的abcd就停止了此次匹配,不会干扰后面的继续匹配。

正则表达式之贪婪匹配和懒惰匹配相关推荐

  1. Python:利用原生函数count或正则表达式compile、findall、finditer实现匹配统计(包括模糊匹配的贪婪匹配、懒惰匹配)

    Python:利用原生函数count或正则表达式compile.findall.finditer实现匹配统计(包括模糊匹配的贪婪匹配.懒惰匹配) 目录 利用原生函数count或正则表达式compile ...

  2. 正则表达式中的贪婪匹配与懒惰匹配

    正则表达式中贪婪匹配与懒惰匹配的概念 贪婪匹配 匹配尽可能多的字符 当正则表达式中包含能接受重复的限定符时,默认会尽可能多的去匹配更多的字符,这种匹配模式叫做贪婪匹配 懒惰匹配 匹配尽可能少的字符 在 ...

  3. 正则表达式-贪婪匹配与懒惰匹配之获取短信验证码

    今天由于一个正则的关系,涉及到了贪婪匹配和懒惰匹配,因为对正则表达不是很懂,所以做个笔记 以下是获取验证码的方法 /*** 从短信内容中获取验证码* @param src* @param startM ...

  4. python非贪婪匹配_Python中关于正则表达式非贪婪以及多行匹配功能详解

    这篇文章主要介绍了Python正则表达式非贪婪.多行匹配功能,结合实例形式分析了Python正则表达式中非贪婪及多行匹配功能的实现方法与相关注意事项,需要的朋友可以参考下 本文实例讲述了Python正 ...

  5. python---正则表达式和关于贪婪匹配和懒惰匹配

    目录 作业实验 关于贪婪匹配和懒惰匹配 作业实验 关于re 尝试从以下网页数据中提取歌曲名称.作者.歌曲文件名? html = ''' 经典老歌         经典老歌列表     <ul i ...

  6. 正则表达式的贪婪匹配与懒惰匹配

    今天用到正则表达式的懒惰匹配,由于开始不是很了解,所以一个问题纠结了一天,真正了解了就不难了. 例:一个字符串"abcdakdjd" regex="a.*?d" ...

  7. 正则表达式:贪婪模式与懒惰模式

    一 语法区别 贪婪模式与懒惰模式的语法区别在于重复限定修饰符的后面是否有问号,有的话就是懒惰模式,否则就是贪婪模式. 二 例子 他所说的应该是贪婪量词,是先吃尽所有字符,然后再一个一个地吐出来,直接匹 ...

  8. php正则表达式懒惰匹配,正则表达式-贪婪与懒惰

    当正则表达式中包含重复元字符比如"*"."+",都会匹配尽可能多的字符,如"a.*b",最长的以a开始,以b结束的字符串.如果用它来搜索aa ...

  9. PHP正则贪婪/懒惰匹配模式

    贪婪匹配 默认匹配尽可能多的字符.例如a.*b 如果用来搜索"aabab",它会匹配整个字符串"aabab" 懒惰匹配 .*? 能使整个匹配成功的前提下使用最少 ...

最新文章

  1. idea设置自动编译
  2. mysql学习三:mysql的组成部分
  3. python开发工具排名-Python程序员必备的四款开发工具
  4. MongoDB学习笔记~为IMongoRepository接口添加分页取集合的方法
  5. Oracle JDBC版本区别(转)
  6. Endpoint 理解
  7. opencv矩阵操作函数查询
  8. 音视频技术开发周刊(第126期)
  9. 【Python3网络爬虫开发实战】1.6.2-Tornado的安装
  10. 毕业论文word排版设置
  11. 记一次java-selenium自动抢红包最简单案例1
  12. 再说变体结构 - 回复 彬 的问题
  13. asp.net GridView控件的列属性
  14. python验证身份证最后一位数字代表什么_身份证尾数带X的人,是有什么特殊身份吗?看完涨知识了...
  15. 扇贝有道180914每日一句
  16. 64 The HTTP header line [ssl-client-cert:12330x11] does not conform to RFC 7230 and has been ignored
  17. Bada学习-多任务模式
  18. Unity3D接入移动MM支付SDK(强联网)的问题
  19. 2021江苏省高考成绩排名查询,江苏高考成绩排名查询系统,2021年江苏个人成绩一分一段表...
  20. 《惢客创业日记》2020.07.28(周二)因健忘症引发的痛点

热门文章

  1. msys2 结合 vscode 使用 lldb 进行调试及 lldb-mi.exe 问题
  2. 如何解决 vue 初始化页面闪动问题
  3. 群晖上安装MediaWiki的简单记录
  4. GD32汽车诊断协议 ISO-9141测试
  5. MGRE结合OSPF
  6. CSIRO Detects Raw Materials Used in the Ma IoT PLC accessking of the First Stars
  7. JAVA中的多线程与运动仿真(1)——用JAVA来放一场烟花
  8. [DDR]2 - Initialization, Training and Calibration
  9. WorldFirst公布本地化品牌名称,跨境收款万里汇!
  10. 金三银四求职季,程序员面试必备——编程语言篇