python正則表達(dá)式的懶惰匹配和貪婪匹配說(shuō)明
第一次碰到這個(gè)問(wèn)題的時(shí)候,確實(shí)不知道該怎么辦,后來(lái)請(qǐng)教了一個(gè)大神,加上自己的理解,才了解是什么意思,這個(gè)東西寫(xiě)python的會(huì)經(jīng)常用到,而且會(huì)特別頻繁,在此寫(xiě)一篇博客,希望可以幫到一些朋友。
例:一個(gè)字符串 “abcdacsdnd”
①懶惰匹配
regex = "a.*?d"
②貪婪匹配
regex = "a.*d"
測(cè)試代碼:
# coding=UTF-8 import re str = "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,匹配到滿(mǎn)足條件的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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python的socket庫(kù)實(shí)現(xiàn)通信功能的示例代碼
本文主要給大家介紹了如何使用python的socket庫(kù)實(shí)現(xiàn)通信功能,這里簡(jiǎn)單的給每個(gè)客戶(hù)端增加一個(gè)不重復(fù)的uid,客戶(hù)端之間可以根據(jù)這個(gè)uid選擇進(jìn)行廣播通信,感興趣的小伙伴快來(lái)看看吧2023-08-08Python集成C#實(shí)現(xiàn)界面操作下載文件功能的全過(guò)程
使用腳本進(jìn)行下載的需求很常見(jiàn),下面這篇文章主要給大家介紹了關(guān)于Python集成C#實(shí)現(xiàn)界面操作下載文件功能的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03Python文件打開(kāi)方式實(shí)例詳解【a、a+、r+、w+區(qū)別】
這篇文章主要介紹了Python文件打開(kāi)方式,結(jié)合實(shí)例形式詳細(xì)分析了Python文件打開(kāi)函數(shù)的使用及a、a+、r+、w+等屬性功能、使用區(qū)別與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03Python數(shù)據(jù)處理的三個(gè)實(shí)用技巧分享
數(shù)據(jù)處理無(wú)所不在,掌握常用技巧,事半功倍。這篇文章將使用Pandas開(kāi)展數(shù)據(jù)處理分析,總結(jié)其中常用、好用的數(shù)據(jù)分析技巧,感興趣的可以學(xué)習(xí)一下2022-04-04Python 給某個(gè)文件名添加時(shí)間戳的方法
今天小編就為大家分享一篇Python 給某個(gè)文件名添加時(shí)間戳的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10django使用圖片延時(shí)加載引起后臺(tái)404錯(cuò)誤
本文給大家介紹的是作者在Django中使用圖片的延時(shí)加載技術(shù)后引起后臺(tái)404錯(cuò)誤的問(wèn)題以及解決思路和方法,有需要的小伙伴可以參考下2017-04-04