一.re模塊的查找方法:
1.findall 匹配全部每一項都是列表中的一個元素
import re
ret = re.findall('\d+','asd魯班七號21313') # 正則表達式,待匹配的字符串,flag
# ret = re.findall('\d','asd魯班七號21313') # 正則表達式,待匹配的字符串,flag
# print(ret)
2.search 只匹配從左到右的第一個,等到的不是直接的結果,而是一個變量,經過這個變量的group方法來獲取結果正則表達式
import re ret = re.search('\d+','asd魯班七號21313') print(ret) # 內存地址,這是一個正則匹配的結果
print(ret.group()) # 經過ret.group()獲取真正的結果
2.1若是沒有匹配到,會返回None,使用group會報錯
ret = re.search('\d+','asd魯班七號') print(ret.group())
2.2因此這個時候調用我要用一下格式spa
ret = re.search('\d+','asd魯班七號') if ret: print(ret.group())
3.match 從頭開始匹配,至關於search中的正則表達式加上^code
ret = re.match('\d+','1233asd魯班七號21313') print(ret)
二.字符串處理擴展blog
1.split--切割內存
s = 'luban|cheng|an|'
print(s.split('|')) s = 'luban34cheng21an89'
print(re.split('\d+',s))
2.sub--替換字符串
ret = re.sub('\d+','H','luban34cheng21an89',1) print(ret)
3.subn 返回一個元祖,返回第二個元素是替換的次數字符串處理
ret = re.subn('\d+','H','luban34cheng21an89') print(ret)
三.re模塊的進階it
1.compile 節省你使用正則表達式解決問題的時間,編譯正則表達式,編譯成字節碼,在屢次使用的過程當中,不會屢次編譯編譯
ret = re.compile('\d+') # 已經完成編譯
print(ret) res = ret.findall('luban34cheng21an89') print(res) res = ret.search('1233asd魯班七號21313') print(res.group())
2.finditer 節省你使用正則表達式解決問題的空間class
ret = re.finditer('\d+','1233asd魯班七號21313') for i in ret: print(i.group())
四.總結
findall 返回列表,找全部的匹配項
search 匹配就返回一個變量,經過group取匹配到的第一值,不匹配就返回None,group會報錯
match 至關於search的正則表達式中加了一個'^'
split 返回列表,按照正則規則切割,默認匹配到的內容會被切掉
sub/subn 替換,按照正則規則去尋找要被替換的內容,subn返回元祖,第二個值是替換的次數
compile 編譯一個正則表達式,用這個結果去search,match,fildall,finditer 可以節省時間
finditer 返回一個迭代器,全部的結果都在這個迭代器中,須要經過循環+group的形式取值 可以節省內存