python re模塊匹配貪婪和非貪婪模式詳解
這篇文章主要介紹了python re模塊匹配貪婪和非貪婪模式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
python貪婪和非貪婪
正則表達(dá)式通常用于在文本中查找匹配的字符串。Python里數(shù)量詞默認(rèn)是貪婪的(在少數(shù)語(yǔ)言里也可能是默認(rèn)非貪婪),總是嘗試匹配盡可能多的字符;非貪婪則相反,總是嘗試匹配盡可能少的字符。在"*","?","+","{m,n}"后面加上?,使貪婪變成非貪婪。
>>> s="This is a number 234-235-22-423"
>>> r=re.match(".+(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
'4-235-22-423'
>>> r=re.match(".+?(\d+-\d+-\d+-\d+)",s)
>>> r.group(1)
'234-235-22-423'
>>>
正則表達(dá)式模式中使用到通配字,那它在從左到右的順序求值時(shí),會(huì)盡量“抓取”滿足匹配最長(zhǎng)字符串,在我們上面的例子里面,“.+”會(huì)從字符 串的啟始處抓取滿足模式的最長(zhǎng)字符,其中包括我們想得到的第一個(gè)整型字段的中的大部分,“\d+”只需一位字符就可以匹配,所以它匹配了數(shù)字“4”,而“.+”則匹配了從字符串起始到這個(gè)第一位數(shù)字4之前的所有字符。
解決方式:非貪婪操作符“?”,這個(gè)操作符可以用在"*","+","?"的后面,要求正則匹配的越少越好。
下面這個(gè)例子仔細(xì)體會(huì)下
>>> re.match(r"aa(\d+)","aa2343ddd").group(1) '2343' >>> re.match(r"aa(\d+?)","aa2343ddd").group(1) '2' >>> re.match(r"aa(\d+)ddd","aa2343ddd").group(1) '2343' >>> re.match(r"aa(\d+?)ddd","aa2343ddd").group(1) '2343' >>>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PHP基于phpqrcode類庫(kù)生成二維碼過(guò)程解析
這篇文章主要介紹了PHP基于phpqrcode類庫(kù)生成二維碼過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
python實(shí)現(xiàn)Excel多行多列的轉(zhuǎn)換的示例
本文主要介紹了python實(shí)現(xiàn)Excel多行多列的轉(zhuǎn)換的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python實(shí)現(xiàn)跨平臺(tái)桌面應(yīng)用程序開(kāi)發(fā)的完整指南
在當(dāng)今軟件開(kāi)發(fā)領(lǐng)域,跨平臺(tái)應(yīng)用程序開(kāi)發(fā)變得越來(lái)越重要,下面我們就來(lái)探討使用Python進(jìn)行跨平臺(tái)桌面應(yīng)用程序開(kāi)發(fā)的主要框架,工具和最佳實(shí)踐吧2025-04-04
詳解python中@classmethod和@staticmethod方法
在python類當(dāng)中,經(jīng)常會(huì)遇到@classmethod和@staticmethod這兩個(gè)裝飾器,那么到底它們的區(qū)別和作用是啥子呢?本文結(jié)合場(chǎng)景分析給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧2022-10-10
Python設(shè)置和解除Word文檔保護(hù)的實(shí)現(xiàn)步驟
在日常工作和學(xué)習(xí)中,我們經(jīng)常需要使用Word文檔來(lái)記錄和分享重要的信息,為了確保文檔內(nèi)容的安全性和完整性,了解如何保護(hù)和取消保護(hù)Word文檔顯得尤為重要,這篇博客將詳細(xì)介紹如何使用Python設(shè)置和解除Word文檔的保護(hù),需要的朋友可以參考下2025-02-02

