一個(gè)例子幫您掌握python正則re.match、re.search和re.findall的區(qū)別

在使用python正則進(jìn)行字符串匹配查詢時(shí),最常用的三個(gè)函數(shù)是re.match、re.search和re.findall,在這里我就用一個(gè)例子帶大家了解這三者的使用區(qū)別,話不多說我們直接上代碼!

import re

txt="test,a:123,b:1234,c:12345,hello!"

re.match

#從首字母開始開始匹配,string如果包含pattern子串,則匹配成功,返回Match對象,失敗則返回None

m1=re.match(r'(\d+),', txt)

print(m1)

輸出:None

原因是 txt 變量是以test開頭,所以并沒有從首字母開始完全匹配

re.search

#若string中包含pattern子串,則返回匹配對象,否則返回None,注意,如果string中存在多個(gè)pattern子串,只返回第一個(gè)。

m2=re.search(r'(\d+),', txt)

print(m2)

輸出:<re.Match object; span=(7, 11), match='123,'>

原因是search是只要在字符串中知道匹配對象,就會返回第一個(gè)匹配的對象。如果想要看具體的匹配對象值,使用print(m2.group())即可。

re.findall

#findall 通過group() 來進(jìn)行多個(gè)值得匹配,返回string中所有與pattern相匹配的全部字串,返回形式為list。

m3 = re.findall(r'(\d+),', txt)

print(m3)

輸出:['123', '1234', '12345']

原因是findall會返回多個(gè)符合匹配表達(dá)式的對象值,返回形式是list

#如果需要匹配多個(gè)分組表達(dá)式,可以使用例如:(\w+) 和(\d+)兩個(gè)group 表達(dá)式進(jìn)行匹配

m4 = re.findall(r'(\w+):(\d+),', txt)

print(m4)

輸出:[('a', '123'), ('b', '1234'), ('c', '12345')]

我的每一篇文章都希望幫助讀者解決實(shí)際工作中遇到的問題!如果文章幫到了您,勞煩點(diǎn)贊、收藏、轉(zhuǎn)發(fā)!您的鼓勵(lì)是我不斷更新文章最大的動(dòng)力!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容