美文网首页
02-贪婪模式与懒惰模式(非贪婪模式)

02-贪婪模式与懒惰模式(非贪婪模式)

作者: Michael_748c | 来源:发表于2018-02-05 11:05 被阅读0次

贪婪模式与懒惰模式(非贪婪模式)

(一)贪婪模式

以字符串“daaadcccd”为源字符串作为栗子。

正则 匹配结果
(d)(\w+) “daaadcccd”;其中"\w+" 匹配第一个 "d" 之后的所有字符 "xxxdxxxd";
(d)(\w+)(d) “daaadcccd”;其中"\w+" 匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。

同理,除了"+"之外,带 "*" 和 "{m,n}" 的表达式都是尽可能地多匹配,这种匹配原则就叫作 "贪婪" 模式 。

(二)懒惰模式(非贪婪模式)

在修饰匹配次数的特殊符号(+、*、{m,n})后再加上一个 "?" 号,就由贪婪模式变成懒惰模式。
以字符串“daaadcccd”为源字符串作为栗子。

正则 匹配结果
(d)(\w+?) “da”;其中"\w+" 匹配第一个 "d" 之后的字符“a”
(d)(\w+?)(d) “daaad”;其中"\w+" 匹配"aaa"

(三)区别

举例来讲就可以明白,对于“daaadcccd”字符串“daaad”和“daaadcccd”都符合(d)(\w+)(d)正则,取最长的那个“daaadcccd”。而(d)(\w+?)(d)正则则取最短的那个“daaad”。

(d)(\w+)(d)(\w+?) 也是同理。

(四)其他栗子

以字符串“<td><p>aa</p></td> <td><p>bb</p></td>”为源字符串作为栗子。

正则 匹配结果
<td>(.*)</td> 匹配“<td><p>aa</p></td> <td><p>bb</p></td>”整个字符串
<td>(.*?)</td> 第一次匹配“<td><p>aa</p></td>“字符串;再次匹配下一个时匹配到”<td><p>bb</p></td>"

相关文章

  • 02-贪婪模式与懒惰模式(非贪婪模式)

    贪婪模式与懒惰模式(非贪婪模式) (一)贪婪模式 以字符串“daaadcccd”为源字符串作为栗子。 同理,除了"...

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

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

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

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

  • javascript正则表达式

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

  • 贪婪模式与非贪婪模式

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

  • 039 Python语法之正则表达式

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

  • JS正则

    一、什么是贪婪模式和非贪婪模式? 贪婪模式:就是量词在默认情况下尽可能的多匹配。例如: 非贪婪模式:就是尽可能少的...

  • 第23章 正则表达式作业

    第1题:什么是贪婪模式和非贪婪模式? 什么是贪婪模式和非贪婪模式? 比如{3,5}这个量词,要是在句子中出现了十次...

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

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

  • 贪婪模式VS非贪婪模式

    作为开始,我们看看下面的正则:var str = 'a "witch" and her "broom" is on...

网友评论

      本文标题:02-贪婪模式与懒惰模式(非贪婪模式)

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