python中re模組
阿新 • • 發佈:2020-07-29
1 search(): 在整個字串中查詢,返回第一個匹配內容,如果找到返回match物件,沒找到返回None;需要通過group取值,為None時會報錯
import re
ret = re.search('\d+','wanghw123ww676')
print(ret)
if ret:
print(ret.group())
輸出結果:
<_sre.SRE_Match object; span=(6, 9), match='123'>
123
2 match():從字串的第一個字元開始匹配,如果找到返回match物件,沒找到返回None;需要通過group方法取值,為None時會報錯
import re
mm="c:\\ab\\bc\\cd\\"
print (mm)
r=re.match("c:\\\\ab",mm) #\\防止轉義
print (r.group())
r=re.match(r"c:\\ab",mm).group() #r表示原生字串
print (r)
輸出結果:
c:\ab\bc\cd\
c:\ab
c:\ab
3 findall():在字串中匹配,如果成功返回match物件,如果失敗返回None
import re ret = re.findall('\d+','wanghw123ww676') print(ret) 輸出結果: ['123', '676']
4 finditer():在字串中匹配,如果成功返回match可迭代物件,如果失敗返回None
import re
ret = re.finditer('\d+','wanghw123ww676')
print(ret)
for m in ret:
print(m.group())
輸出結果:
<callable_iterator object at 0x0000029D80957CF8>
123
676
5 split():按照匹配的字串進行分割
import re s1 = 'wanghw123whw456qwe' sq = re.split('\d+',s1) print(sq) 輸出結果: ['wanghw', 'whw', 'qwe']
6 sub():替換匹配的子字串,返回替換之後的字串
sub方法的第一個引數是正則的規則,第二個引數是要被替換成的字串,第三個引數是需要被操作的字串。當然,
聰明的你肯定想到一個問題:這預設替換的是所有符合規則的字串呀!我如果想限定替換的次數怎麼做呢?
我們可以指定第四個引數,來達到限定替換次數的作用
import re
s1 = 'wanghw123whw456'
ss = re.subn('\d+','HERO',s1)
print(ss)
s1 = 'wanghw123whw456'
ss = re.sub('\d+','HERO',s1,1)
print(ss)
輸出結果:
('wanghwHEROwhwHERO', 2)
wanghwHEROwhw456
match()和search()的區別:
- match()函式只檢測RE是不是在string的開始位置匹配
- search()會掃描整個string查詢匹配
- match()只有在0位置匹配成功的話才有返回,如果不是開始位置匹配成功的話,match()就返回none