1. 程式人生 > 實用技巧 >python中re模組

python中re模組

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

詳見此連結:https://www.cnblogs.com/paulwhw/p/10579914.html