python re findall 效率_Python re.search和re.findall的比较

Python re.search和re.findall的比较:

先分析re.search:

importre

s1='hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk'f1=re.search('xx(.*?)xx',s1)print(f1)

f2=re.search('xx(.*?)xx',s1).group(1)print(f2)

f3=re.search('xx(.*?)xxrynxx(.*?)xx',s1)print(f3)

f41=re.search('xx(.*?)xxrynxx(.*?)xx',s1).group(1)#这里如果用group(3)则返回no such group,可见re.search寻找第一个满足条件序列,即当re.search找到第一个符合要求的内容后,不管后面是否还有符合要求的内容,都会停止寻找

print(f41)

f42=re.search('xx(.*?)xxrynxx(.*?)xxplkhjxx(.*?)xxrynxx(.*?)xx',s1).group(3)print(f42)print('end')

输出为:

<_sre.sre_match object span="(2," match="xxHelloxx">  #数据类型为‘sre.SRE_MATCH’

Hello  #数据类型为‘str’

Hello

Hi

end

注意,search要加.group(%d)!这样才能读取所需类型,而不是得到‘sre.SRE_MATCH’类型,which无法直接处理。

再来看re.findall:

importre

s1='hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk'f1=re.findall('xx(.*?)xx',s1)print(f1)

f2=re.findall('xx(.*?)xxrynxx(.*?)xx',s1)print(f2)print(f2[0])print(f2[1][0])print(type(f2))print(type(f2[0]))print(type(f2[1][0]))print('end')

输出为:

['Hello', 'Python', 'Hi', 'World']

[('Hello', 'Python'), ('Hi', 'World')]

('Hello', 'Python')

Hi

end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值