
在使用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)力!