findall 返回列表 找所有的匹配項
search 匹配就返回一個變量,通過group取匹配到的第一個值,不匹配就返回None,group會報錯
match 相當于search的正則表達式中加了一個'^'
spilt 返回列表,按照正則規(guī)則切割,默認匹配到的內容會被切掉
sub/subn 替換,按照正則規(guī)則去尋找要被替換掉的內容,subn返回元組,第二個值是替換的次數(shù)
compile 編譯一個正則表達式,用這個結果去search match findall finditer 能夠節(jié)省時間
finditer 返回一個迭代器,所有的結果都在這個迭代器中,需要通過循環(huán)+group的形式取值 能夠節(jié)省內存
- findall 匹配所有谨胞,匹配到的元素放入列表中
re_findall = re.findall('\d+', '我今年18歲明年我就19歲了')
print(re_findall)
結果:
['18', '19']
- search 只匹配從左到右的第一個兼蕊,得到的不是直接的結果汇在,而是一個變量蝌蹂,通過這個變量的group方法來獲取結果.如果沒有匹配到,會返回None,使用group會報錯.
ret = re.search('\d+','周倫今年40歲了榨呆,結婚差不多20年了')
print(ret) # 內存地址,這是一個正則匹配的結果
print(ret.group()) # 通過ret.group()獲取真正的結果
結果:
<_sre.SRE_Match object; span=(4, 6), match='40'>
40
ret = re.search('\d+','我是一個程序員 666')
if ret : # 內存地址,這是一個正則匹配的結果
print(ret.group()) # 通過ret.group()獲取真正的結果
結果:
666
- match 從頭開始匹配,匹配到符合的就馬上返回
ret = re.match('\d','928')
print(ret.group())
結果:
9
- split 返回列表,按照正則規(guī)則切割礁苗。
s = 'will|wilson|william'
print(s.split('|'))
s = 'alex83taibai40egon25'
print(re.split('\d+',s))
結果:
['will', 'wilson', 'william']
['alex', 'taibai', 'egon', '']
- sub/subn 替換
sub = re.sub('不', '就', '我不是一個程序員浦夷,不會敲代碼')
print(sub)
sub = re.sub('不', '就', '我不是一個程序員,不會敲代碼',1)
print(sub)
# subn 返回一個元組,第二個元素是替換的次數(shù)
subn = re.subn('不', '就', '我不是一個程序員,不會敲代碼')
print(subn)
結果:
我就是一個程序員,就會敲代碼
我就是一個程序員,不會敲代碼
('我就是一個程序員,就會敲代碼', 2)
- compile 預編譯
ret = re.compile('\d+') # 完成編譯
findall = ret.findall("alex83taibai40egon25")
print(findall)
search = ret.search("alex83taibai40egon25")
print(search)
print(search.group())
結果:
['83', '40', '25']
<_sre.SRE_Match object; span=(4, 6), match='83'>
83
- finditer 節(jié)省你使用正則表達式解決問題的內存
ret = re.finditer("\d+","alex83taibai40egon25")
for i in ret:
print(i.group())
結果:
83
40
25