美文网首页
贪婪与非贪婪匹配模式原理

贪婪与非贪婪匹配模式原理

作者: pixels | 来源:发表于2017-12-12 16:01 被阅读44次

转载自http://blog.csdn.net/lxcnn/article/details/4756030
源字符串:aa<div>test1</div>bb<div>test2</div>cc
正则表达式一:<div>.*</div>
匹配结果一:<div>test1</div>bb<div>test2</div>
正则表达式二:<div>.*?</div>
匹配结果二:<div>test1</div>(这里指的是一次匹配结果,所以没包括<div>test2</div>)

下面从匹配原理角度分析的匹配过程。


35916_1265676086dlqj.jpg

首先由“<”取得控制权,由位置0位开始尝试匹配,匹配字符“a”,匹配失败,第一轮匹配结束。第二轮匹配从位置1开始尝试匹配,同样匹配失败。第三轮从位置3开始尝试匹配,匹配字符“<”,匹配成功,控制权交给“d”。
“d”尝试匹配字符“d”,匹配成功,控制权交给“i”。重复以上过程,直到由“>”匹配到字符“>”,控制权交给“.”。
  “.
”属于贪婪模式,将从B处后的字符“t”开始,一直匹配到E处,也就是字符串结束位置,将控制权交给“<”。
  “<”从字符串结束位置尝试匹配,匹配失败,向前查找可供回溯的状态,把控制权交给“.”,由“.”让出一个字符“c”,把控制权再交给“<”,尝试匹配,匹配失败,向前查找可供回溯的状态。一直重复以上过程,直到“.*”让出已匹配的字符“<”,实际上也就是让出了已匹配的子串“</div>cc”为止,“<”才匹配字符“<”成功,控制权交给“/”。
接下来由“/”、“d”、“i”、“v”分别匹配对应的字符成功,此时整个正则表达式匹配完毕。

案例:

var str = 'The Quick Brown Fox Jumps Over The Lazy Dog The Fx Jumps Over The Lazy Dog'.match(/quick\s(brown).+(jumps)/ig)
["Quick Brown Fox Jumps Over The Lazy Dog The Fx Jumps"];
str.match(/quick\s(brown).+(jumps)/ig)
结果:["Quick Brown Fox Jumps Over The Lazy Dog The Fx Jumps"]

str.match(/quick\s(brown).+?(jumps)/ig)
结果:["Quick Brown Fox Jumps"]

相关文章

  • 贪婪与非贪婪匹配模式原理

    转载自http://blog.csdn.net/lxcnn/article/details/4756030源字符串...

  • javascript正则表达式

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

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

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

  • 039 Python语法之正则表达式

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

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

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

  • 贪婪与非贪婪模式的匹配原理分析

    正则表达式的两个普适性原则: 1、优先选择最左侧的匹配结果 2、标准的匹配量词是匹配优先的 第一条什么意思捏? 就...

  • 正则表达式

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

  • 正则表达式高级使用

    一,贪婪与非贪婪 贪婪:尽可能多的匹配 非贪婪:尽可能少的匹配 非贪婪符可以用在*,?,+的后面 *? 重复1次 ...

  • JS正则

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

  • 贪婪与非贪婪匹配

    1.什么是正则表达式的贪婪与非贪婪匹配 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使...

网友评论

      本文标题:贪婪与非贪婪匹配模式原理

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