1. findall()
代码块
import re
str_1='1342344jlksdkf438777'
res_1=re.findall('\d+',str_1)
print(res_1) #['1342344', '438777'] 返回所有的数字
res_2=re.findall('\s+',str_1)
print(res_2) #[] 为什么字符串匹配就是空的呢。
2 search()
代码块
import re
ret2 = re.search('\d+','@$19874ashfk01248')
print(ret2) # 返回值类型: 正则匹配结果的对象<re.Match object; span=(2, 7), match='19874'>
# 返回值个数:1 如果匹配上了就返回对象
if ret2:
print(ret2.group()) # 返回的对象通过group来获取匹配到的第一个结果
ret3 = re.search('\s+','hello19874ashfk01248')
print(ret3) # 返回值类型: None 如果没有匹配上就是None
3 match()
代码块
import re
ret4= re.match('\d+','19874ashfk01248') #返回一个对象,<re.Match object; span=(2, 7), match='19874'>
print(ret4.group()) #19874
ret5 = re.match('\d+','%^19874ashfk01248')
print(ret5)#none 必须开头就是匹配项才能匹配的上
4 替换replace()
代码块
name='wangsiyu'
res=name.replace('siyu','money')
print(name)
print(res)
代码块
import re
str_1='sdjglklk98753lkds80kl'
res_1=re.sub('\d+','money',str_1)
print(str_1) #sdjglklk98753lkds80kl
print(res_1) #sdjglklkmoneylkdsmoneykl
res_2=re.subn('\d+','money',str_1)
print(res_2) #('sdjglklkmoneylkdsmoneykl', 2) 返回结果,和替代的个数。
6切割split()和联合join()
代码块
a='wang|si|yu|'.split('|') #把字符串转为列表
print(a) #['wang', 'si', 'yu', '']
res='-'.join(a) #把列表转为字符串
print(res) #wang-si-yu-
#正则表达式来切割
import re
b='wang54si67yu456today'
res=re.split('\d+',b)
print(res) #['wang', 'si', 'yu', 'today']
7.compile和finditer
compile 把正则表达式编译起来复用
代码块
# compile时间效率 : 只有在多次使用某一个相同的正则表达式的时候,这个compile才会帮助我们提高程序的效率
import re
res_1=re.findall('\d','alex83egon20taibai40')
print(res_1) #['8', '3', '2', '0', '4', '0']
ret = re.compile('\d')#将这个正则表达式编译起来重复用
res = ret.search('alex83egon-20taibai-40')
#
print(res.group())
finditer
代码块
# finditer 空间效率
import re
ret = re.finditer('\d','sjkhkdy982ufejwsh02yu93jfpwcmc')
for r in ret:
print(r.group())
网友评论