python中find和findall区别_关于Python regex和findall()的说明

我在处理Python Challenge时遇到了这个问题。确切地说是10号。我决定尝试用正则表达式来解决这个问题——拉出重复序列,计算它们的长度,并在此基础上构建序列中的下一项。在

所以我开发的regex是:'(\d)\1*'

它在联机regex tester上运行得很好,但是在我的脚本中使用它时,它的性能却不一样:regex = re.compile('(\d)\1*')

text = '111122223333'

re.findall(regex, text)

> ['1', '1', '1', '1', '2', '2', '2',...]

以此类推。所以我在Python的re模块中学习了raw类型。这是我的第一个问题:有人能解释一下这到底是干什么的吗?doc将其描述为减少了对反斜杠的转义需求,但是对于更简单的regex,比如\d+似乎并不需要它,我不明白为什么。在

所以我将正则表达式改为r'(\d)\1*',现在尝试使用findall()来生成序列列表。我得到了

^{pr2}$

又很困惑。我还是不明白。请帮忙?在

我决定这么做是为了避开这个问题:[m.group() for m in regex.finditer(text)]

> ['1111', '2222', '3333']

我一直在寻找什么。然后,基于this线程,我尝试在整个regex->r'((\d)\2*)'中添加一个组。

我最终得到:> [('1111', '1'), ('2222', '2'), ('3333', '3')]

在这一点上我很困惑。我知道这个结果与多个组有关,但我不确定。在

而且,这是我第一次发帖,所以如果我的礼仪不正确,我很抱歉。请随时纠正我的错误。谢谢!在

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值