美文网首页
正则表达式——贪婪与非贪婪模式

正则表达式——贪婪与非贪婪模式

作者: 菜菜___ | 来源:发表于2022-05-17 11:25 被阅读0次

1. 概述

贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为。
贪婪模式:在整个表达式匹配成功的前提下,尽可能多的匹配(最大范围匹配);
非贪婪模式:在整个表达式匹配成功的前提下,尽可能少的匹配(最小范围匹配);

2. 贪婪与非贪婪模式匹配举例

eg:
源字符串:aa<div>test1</div>bb<div>test2</div>cc
正则一:<div>.*</div>

let str='aa<div>test1</div>bb<div>test2</div>cc'
let reg = '<div>.*</div>'
console.log(str.match(reg)[0])
// 输出:<div>test1</div>bb<div>test2</div>

正则二:<div>.*?</div>

let str='aa<div>test1</div>bb<div>test2</div>cc'
let reg = '<div>.*?</div>'
console.log(str.match(reg)[0])
// 输出:<div>test1</div>

(这里指的是一次匹配结果,所以没包括<div>test2</div>)
从上例可以看出:
正则一采用的贪婪模式,在匹配到第一个“</div>”时已经可以使整个表达式匹配成功,但是由于采用的是贪婪模式,所以仍然要向右尝试匹配,查看是否还有更长的可以成功匹配的子串,匹配到第二个“</div>”后,向右再没有可以成功匹配的子串,匹配结束,匹配结果为“<div>test1</div>bb<div>test2</div>”。
正则二采用的是非贪婪模式,在匹配到第一个“</div>”时使整个表达式匹配成功,由于采用的是非贪婪模式,所以结束匹配,不再向右尝试,匹配结果为“<div>test1</div>”。


更多详细介绍参考链接:
https://blog.csdn.net/lxcnn/article/details/4756030

相关文章

  • JavaScript 正则表达式( 匹配网页的图片地址)

    正则表达式 - 元字符 贪婪模式与非贪婪模式 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为;贪婪模式 在...

  • 正则表达式的贪婪模式和非贪婪模式

    一、什么是贪婪模式和非贪婪模式? 定义 贪婪模式:正则表达式趋向于匹配最大长度。 非贪婪模式:正则表达式趋向于匹配...

  • 正则表达式

    贪婪模式和非贪婪模式 正则表达式是贪婪匹配的。比如:'123456789'.replace(/\d{3,6}/g,...

  • 正则表达式

    1.什么是贪婪模式和非贪婪模式? 量词在默认下是尽可能多的匹配的,就是贪婪模式;非贪婪模式,让正则表达式尽可能少的...

  • 正则表达式

    1.什么是贪婪模式和非贪婪模式? 贪婪模式 一般情况下,正则表达式在匹配过程中会尽可能多的匹配 非贪婪模式 让正则...

  • 006.聊聊 JavaScript 正则表达式 下卷

    有点复杂,是转载的文章 贪婪模式与非贪婪模式讲解 Javascript中的正则贪婪与非贪婪模式的区别是: 被量词修...

  • 正则表达式(语法)

    1.1 正则表达式元字符和语法: 1.2. 数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符...

  • 爬虫的提取(2)--re正则

    python正则表达式基本元字符 贪婪模式在python中默认采用的是贪婪模式,使用非贪婪模式的话,只需要在量词后...

  • 贪婪模式与非贪婪模式

    下面代码输出什么? 为什么? 改写代码,让其输出hunger, world. 补全如下正则表达式,输出字符串中的注...

  • javascript正则表达式

    什么是贪婪模式和非贪婪模式? 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功...

网友评论

      本文标题:正则表达式——贪婪与非贪婪模式

      本文链接:https://www.haomeiwen.com/subject/peywurtx.html