美文网首页饥人谷技术博客
正则表达式贪婪模式与非贪婪模式

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

作者: 寿木 | 来源:发表于2017-09-30 16:14 被阅读65次

所谓贪婪模式和非贪婪模式,都是在正则表达式进行匹配时的一种状态。

var str = 'hello world "tomorrow" will be "better" '
str.match(/".*"/g);

按照一贯的逻辑思维,匹配得到的结果应该会是tomorrowbetter。但是我们运行一下会发现,匹配的结果是"tomorrow" will be "better"

这个时候就是正则的贪婪模式在起作用。

所谓的贪婪模式就是在可以匹配多个结果时选取最大值的结果个数。

当匹配个数时,出现“+、*、{n,m}、{n,}”这些量词的时候,默认为最大数值的匹配个数。

上面的例子中,我们想让匹配的结果和我们预想的一样该如何操作呢?

取消贪婪模式时,只需要在量词后面加上“?”即可。

var str = 'hello world "tomorrow" will be "better" '
str.match(/".*?"/g);

这个时候我们就关闭了贪婪模式,正则引擎在匹配时会尽可能少的来匹配字符。上面代码的输出结果即为"tomorrow""better"

总结一下:在数量匹配时,正则引擎默认的规则为“贪婪模式”。在贪婪模式下,正则引擎会尽可能多的匹配字符,一直到匹配的结果为false时,回溯去寻找倒数第一个匹配位置,返回结果。“非贪婪模式”下,正则引擎会尽可能少的匹配字符,将第一个匹配结果为true的结果返回。取消贪婪模式的方法实在量词后面加上“?”即可。

相关文章

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

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

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

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

  • 正则表达式

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

  • 正则表达式

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

  • 正则表达式

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

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

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

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

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

  • javascript正则表达式

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

  • 贪婪模式与非贪婪模式

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

  • 039 Python语法之正则表达式

    正则的基本语法 贪婪与非贪婪模式 Python中的数量词默认是贪婪模式的,总是默认尝试匹配更多的字符,非贪婪模式则...

网友评论

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

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