一 : re模組的查詢
findall 優先順序查詢 返回列表 找所有的匹配項(從大段的內容中找匹配到的專案)
import restr = "qwer asdf zxcv qwerasd"
ret =re.compile("\w+\s\w+") #第一種沒有括號的
print(ret.findall(str))
# 結果 : ['qwer asdf', 'zxcv qwerassd']
str = "qwer asdf zxcv qwerasd"
ret =re.compile("(\w+)\s\w+") #第二種有乙個括號的
print(ret.findall(str))
#結果 : ['qwer', 'zxcv']
str = "qwer asdf zxcv qwerasd"
ret =re.compile("((\w+)\s\w+)") #第三種有兩個括號的
print(ret.findall(str))
#結果 : [('qwer asdf', 'qwer'), ('zxcv qwerassd', 'zxcv')]
search: 只匹配從左到右的第乙個,得到的不是直接結果,得到的是乙個變數,通過這個變數的group方法來獲取結果,如果沒有匹配到返回none,group會報錯.
import reret = re.research('\d+',"sjkhk172按實際花費928")
print (ret) #記憶體位址,這是乙個正則匹配的結果
print(ret.group()) #通過ret.group()獲取真正的結果
#<_sre.sre_match object; span=(5, 8), match='172'>
#172
ret = re.search('\d','owghabdjlbnd**')print(ret) #none
print(ret.group()) #會報錯
match:相當於search的正規表示式中加個" ^ "
import reret = re.match('\d+',"172sjkhk按實際花費928") #match相當於在\d前加' ^'
print(ret) #位址
print(ret.group()) #匹配到的內容
#<_sre.sre_match object; span=(0, 3), match='172'>
#172
split:字串擴充套件的處理 替換 切割
s = 'alex|taibai|egon|'print(s.split('|'))
#結果 :['alex', 'taibai', 'egon', '']
import re
s = 'alex83taibai40egon25'
ret = re.split('\d+',s)
print(ret)
#['alex', 'taibai', 'egon', '']
sub/subn :替換,按照正則規則取尋找要被替換的內容,subn返回被替換的元組,第二個值是被替換的次數
ret = re.sub('\d+','h','alex83taibai40egon25')print(ret)
ret = re.sub('\d+','h','alex83taibai40egon25',1) #這裡的1是替換一次
print(ret)
subn 返回乙個元組#,第二個元素是替換的次數
# ret = re.subn('\d+','h','alex83taibai40egon25')
# print(ret)
#alexhtaibaihegonh
#alexhtaibai40egon25
#('alexhtaibaihegonh', 3) #這裡的3是指替換了3次
compile 編譯乙個正規表示式用這個結果取search , match , findall , finditer 能夠節省時間
ret = re.compile('\d+') #已經完成編譯res = ret.findall('alex83taibai40egon25')
print(res)
#['83', '40', '25']
res = re.search('sjkhk172按實際花費928')
print(res)
#172
finditer 節省你使用正規表示式解決問題的空間/記憶體
返回乙個迭代器,所有的結果都在這個迭代器中,需要
ret = re.finditer('\d+','alex83taibai40egon25')for i in ret:
print(i.group())
#83#40
#25
總結:#findall 返回列表 找所有的匹配項
# search 匹配就 返回乙個變數,通過group取匹配到的第乙個值,不匹配就返#回none,group會報錯
# match 相當於search的正規表示式中加了乙個'^'
# spilt 返回列表,按照正則規則切割,預設匹配到的內容會被切掉
# sub/subn 替換,按照正則規則去尋找要被替換掉的內容,subn返回元組,第二#個值是替換的次數
# compile 編譯乙個正規表示式,用這個結果去search match findall #finditer 能夠節省時間
# finditer 返回乙個迭代器,所有的結果都在這個迭代器中,需要通過迴圈#+group的形式取值 能夠節省記憶體
re模組下的的常用方法
引入模組 import re 1.查詢 findall 匹配所有,每一項都是列表中的乙個元素 ret re.findall d sjkhk172按實際花費928 print ret 172 928 search 只匹配從左到右的第乙個,得到的不是結果,而是乙個變數,通過這個變數的group方法來獲取...
re模組常用方法
match string pos endpos string是待匹配的字串pos和endpos可選引數,指定字串的起始和終點位置,預設值分別是0和len 字串長度 match 方法 從起始位置開始查詢,一次匹配 re.match pattern,string,flags 0 result re.ma...
Python的re模組常用方法
search 匹配就 返回乙個變數,通過group取匹配到的第乙個值,不匹配就返回none,group會報錯 match 相當於search的正規表示式中加了乙個 spilt 返回列表,按照正則規則切割,預設匹配到的內容會被切掉 sub subn 替換,按照正則規則去尋找要被替換掉的內容,subn返...