我在处理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')]
在这一点上我很困惑。我知道这个结果与多个组有关,但我不确定。在
而且,这是我第一次发帖,所以如果我的礼仪不正确,我很抱歉。请随时纠正我的错误。谢谢!在