python正則表達(dá)式的懶惰匹配和貪婪匹配說(shuō)明
第一次碰到這個(gè)問(wèn)題的時(shí)候,確實(shí)不知道該怎么辦,后來(lái)請(qǐng)教了一個(gè)大神,加上自己的理解,才了解是什么意思,這個(gè)東西寫python的會(huì)經(jīng)常用到,而且會(huì)特別頻繁,在此寫一篇博客,希望可以幫到一些朋友。
例:一個(gè)字符串 “abcdacsdnd”
①懶惰匹配
regex = 'a.*?d'
②貪婪匹配
regex = 'a.*d'
測(cè)試代碼:
# coding=UTF-8import restr = 'abcdacsdn'print('原始字符串 ' + str)# 懶惰匹配regexL = 'a.*?d'print('懶惰匹配 = ' + regexL)regL = re.compile(regexL)listL = re.findall(regL, str)print('懶惰匹配結(jié)果')print(listL)# 貪婪匹配regexT = 'a.*d'print('貪婪匹配 = ' + regexT)regT = re.compile(regexT)listT = re.findall(regT, str)print('貪婪匹配結(jié)果')print(listT)
測(cè)試結(jié)果:
結(jié)果分析:
懶惰匹配,匹配成功兩次,一次abcd,一次acsd,匹配到滿足條件的abcd就停止了此次匹配,不會(huì)干擾后面的繼續(xù)匹配。
貪婪匹配,匹配成功一次,只有abcdacsd,匹配到字符串后,會(huì)最大限度的占用字符串
以上兩種,一個(gè)是盡量匹配最短串,一個(gè)是匹配最長(zhǎng)串。
補(bǔ)充知識(shí):python正則匹配中貪婪匹配效率比較
用例回歸完成之后,一般都要生成一個(gè)summary_report.但是,發(fā)現(xiàn)生成報(bào)告的時(shí)間耗時(shí)很久,搜集資料發(fā)現(xiàn)與匹配文件內(nèi)容使用的正則表達(dá)式有很大關(guān)系.
1.匹配模式說(shuō)明
下圖中圈住的部分,沒(méi)有注釋掉的使用貪婪匹配,注釋掉的使用非貪婪匹配
執(zhí)行時(shí)間上二者差別巨大;另外執(zhí)行時(shí)間與正則表達(dá)式的長(zhǎng)度也有關(guān)系,較長(zhǎng)的表達(dá)式建議分段匹配.
2.貪婪匹配時(shí)間
3.非貪婪匹配時(shí)間
以上這篇python正則表達(dá)式的懶惰匹配和貪婪匹配說(shuō)明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. ASP基礎(chǔ)入門第四篇(腳本變量、函數(shù)、過(guò)程和條件語(yǔ)句)2. XML在語(yǔ)音合成中的應(yīng)用3. ASP將數(shù)字轉(zhuǎn)中文數(shù)字(大寫金額)的函數(shù)4. jsp 實(shí)現(xiàn)的簡(jiǎn)易mvc模式示例5. 基于PHP做個(gè)圖片防盜鏈6. JSP開發(fā)之hibernate之單向多對(duì)一關(guān)聯(lián)的實(shí)例7. PHP session反序列化漏洞超詳細(xì)講解8. jscript與vbscript 操作XML元素屬性的代碼9. HTML5實(shí)戰(zhàn)與剖析之觸摸事件(touchstart、touchmove和touchend)10. php使用正則驗(yàn)證密碼字段的復(fù)雜強(qiáng)度原理詳細(xì)講解 原創(chuàng)
