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:abccd
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

原文地址:https://www.cnblogs.com/hghua/p/13396692.html