關(guān)于Python正則表達(dá)式 findall函數(shù)問題詳解
在寫正則表達(dá)式的時(shí)候總會遇到不少的問題, 特別是在表達(dá)式有多個(gè)元組的時(shí)候。下面看下re模塊下的findall()函數(shù)和多個(gè)表達(dá)式元組相遇的時(shí)候會出現(xiàn)什么樣的坑。
代碼如下:
import re str="a b c d" regex0=re.compile("((\w+)\s+\w+)") print(regex0.findall(str)) regex1=re.compile("(\w+)\s+\w+") print(regex1.findall(str)) regex2=re.compile("\w+\s+\w+") print(regex2.findall(str))
結(jié)果:
[('a b', 'a'), ('c d', 'c')] ['a', 'c'] ['a b', 'c d']
可能結(jié)果有點(diǎn)意外,下面解釋一下
第一個(gè)正則表達(dá)式中是帶有2個(gè)括號的,我們可以看到其輸出是一個(gè)list 中包含2個(gè) tuple
第二個(gè)正則表達(dá)式中帶有1個(gè)括號,其輸出的內(nèi)容就是括號匹配到的內(nèi)容,而不是整個(gè)表達(dá)式所匹配到的結(jié)果。
第三個(gè)正則表達(dá)式中不帶有括號,其輸出的內(nèi)容就是整個(gè)表達(dá)式所匹配到的內(nèi)容。
結(jié)論:findall()返回的是括號所匹配到的結(jié)果(如regex1),多個(gè)括號就會返回多個(gè)括號分別匹配到的結(jié)果(如regex),如果沒有括號就返回就返回整條語句所匹配到的結(jié)果(如regex2)。所以在提取數(shù)據(jù)的時(shí)候就需要注意這個(gè)坑。
實(shí)際上是由其并不是python特有的,這是 正則 所特有的 , 任何一門高級語言使用正則都滿足這個(gè)特點(diǎn):有括號時(shí)只能匹配到括號中的內(nèi)容,沒有括號【相當(dāng)于在最外層增加了一個(gè)括號】。在正則里面 “()” 代表的是分組的意思,一個(gè)括號代表一個(gè)分組,你只能匹配到"()"中的內(nèi)容
相關(guān)文章
python實(shí)現(xiàn)京東訂單推送到測試環(huán)境,提供便利操作示例
這篇文章主要介紹了python實(shí)現(xiàn)京東訂單推送到測試環(huán)境,提供便利操作,涉及Python基于requests模塊的網(wǎng)絡(luò)請求操作相關(guān)使用技巧,需要的朋友可以參考下2019-08-08Python使用Django實(shí)現(xiàn)博客系統(tǒng)完整版
這篇文章主要為大家詳細(xì)介紹了Python利用Django完整的開發(fā)一個(gè)博客系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03基于Python實(shí)現(xiàn)PDF區(qū)域文本提取工具
這篇文章主要為大家介紹了如何通過Python實(shí)現(xiàn)一個(gè)非常精簡的圖像化的PDF區(qū)域選擇提取工具,文中示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12Python學(xué)習(xí)之函數(shù)的定義與使用詳解
函數(shù)是具有某種特定功能的代碼塊,可以重復(fù)使用(在前面數(shù)據(jù)類型相關(guān)章節(jié)。它使得我們的程序更加模塊化,不需要編寫大量重復(fù)的代碼。本文將詳細(xì)介紹Python中函數(shù)的定義與使用,感興趣的可以學(xué)習(xí)一下2022-03-03Python實(shí)現(xiàn)獲取系統(tǒng)臨時(shí)目錄及臨時(shí)文件的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)獲取系統(tǒng)臨時(shí)目錄及臨時(shí)文件的方法,結(jié)合實(shí)例形式分析了Python文件與目錄操作相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下2019-06-06Django中QuerySet查詢優(yōu)化之prefetch_related詳解
prefetch_related()和select_related()的設(shè)計(jì)目的很相似,都是為了減少SQL查詢的數(shù)量,但是實(shí)現(xiàn)的方式不一樣,下面這篇文章主要給大家介紹了關(guān)于Django中QuerySet查詢優(yōu)化之prefetch_related的相關(guān)資料,需要的朋友可以參考下2022-11-11python正則爬取某段子網(wǎng)站前20頁段子(request庫)過程解析
這篇文章主要介紹了python正則爬取某段子網(wǎng)站前20頁段子(request庫)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08