import re
match
li = re.match('d*', '12821j128j312893j129') # match方法,先使用正则表达式,然后传入待查字符串
print(li) # 结果对象 <_sre.SRE_Match object; span=(0, 5), match='12821'> if li: print(li.group()) # 获得数据12821 ,如果没有就会报错
# 如果没有,就无操作
# 所有的match方法都认为是以。。。开头
re.match('d+') # 相当于^d+
re.search('d+','12821j128j312893j129') li = re.match('d*', '12821j128j312893j129') #这两行效果相同
match可以被替换
search
li = re.search('d*', '12821j128j312893j129') # 在文本中查找 print(li) # 结果对象 <_sre.SRE_Match object; span=(0, 5), match='12821'> if li: print(li.group()) # 获得数据12821 ,如果没有就会报错
findall
li = (re.findall('d*', '12821j128j312893j129')) # 查找所有的符合规则的字符串,并添加到列表中 print(li) # 结果对象 <_sre.SRE_Match object; span=(0, 5), match='12821'> if li: print(li.group) # 获得所有匹配规则的数据
sub
ret = re.sub('d+', 'sb', 'alex,wsir123', 1) # z将字符串的内容替换出来 print(ret) # 替换数字类型为sb,替换一次,如果不给这个 1,默认替换所有符合条件的
subn
print(re.subn('d+', 'sb', 'alex,wsir123')) # 用法与sub相同,但是这个的返回值是一个元组,结果和替换了几次
split
print(re.split('d+', 'alex,wsir123', )) # 如果对正则表示中使用分组,那么分组中的内容也会被保存在列表中 # 用法与字符串的相同,以符合条件的当切割条件
compile
用来提前加载要使用的正则表达式
par = re.compile('d+') # 将写好的正则表达式进行编译,还有可以直接调用 par.finditer('d', 'asdfaf') # 迭代器,处理数据量比较大的,这个迭代器中存的是结果集
特别注意:
ret = """ <h1>hahaha<h1> <h2>wahaha<h2> <title>qqxing< itle> """ res = re.findall('>(w+)<', ret) print(res) # 一个列表,内容为hahaha,wahaha,qqxing # findall总是优先显示分组()中的内容 res = re.findall('>(?:w+)<', ret) # ?:表示取消这个分组优先,正常显示 ret = re.search(r'<(?P<tab1>w+)>(?P<content>w+)<\(w+)>', '<title>qqxing<\title>') # ?P表示对分组起名 ret = re.search(r'<(?P<tab1>w+)>(?P<content>w+)</(?P=tab1)>', '<title>qqxing</title>') # (?P=tab1) 直接在这里引用这个分组 ret = re.search(r'<(w+)>(w+)<\(w+)>', '<title>qqxing<\title>') print(ret.group()) # <title>qqxing< itle> print(ret.group(1)) # title print(ret.group(2)) # qqxing print(ret.group(3)) # itle