python正则表达式在re.findall和re.search中表现不一致——每日10行代码15

今天只想简单的写10行代码,尝试正则表达式中的子串功能,没想到踩了python的一个小坑:

import re

s = "https://blog.csdn.net/weixin_44981444/article/details/108477207"
pat = r'/(w.*4)/'
result = re.findall(pat,s)
print(result)

tt=re.search(pat,s)
print(tt.group())

输出结果:

['weixin_44981444']
/weixin_44981444/

上面的两种方法匹配的结果不一致。 网上搜了好久的答案,原来是因为group()函数是带参数的,默认为0,匹配的是正则表达式整体的结果。group(1) 会列出第一个括号里面的结果,group(2)会列出第二个括号里的结果。所以这个例子,要想达到同样的效果,需要用group(1)。

print(tt.group(1))

输出结果:

weixin_44981444

总结:
re.findall会默认把括号当作分组,还re.search默认不把括号当分组,这就造成了他们之间的一点差别。平常使用时需要注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值