贪婪模式
字符串:<div class="aaa" id="bbb">
正则表达式:/class=".+"/
返回: class="aaa" id="bbb"
个人理解如下: 在图解中,①为取出,②为返回。贪婪重复①和②同时匹配成功时,取①的值。
根据以上过程,得出结果为:class="aaa" id="bbb"
非贪婪模式
字符串:<div class="aaa" id="bbb">
正则表达式:/class=".+?"/
返回:class="aaa"
根据以上过程,得出结果为:class="aaa"
参考:
http://www.laruence.com/2010/06/08/1579.html
匹配过程开始的时候, “.*?”首先取得匹配控制权, 因为是非贪婪模式, 所以优先不匹配, 将匹配控制交给下一个匹配字符”b”, “b”在源字符串位置1匹配失败(“a”), 于是回溯, 将匹配控制交回给”.*?”, 这个时候, “.*?”匹配一个字符”a”, 并再次将控制权交给”b”, 如此反复, 最终得到匹配结果, 这个过程中一共发生了3次回溯.