我有一个字符串
"aaabbbbccc"
我想要检索
["aaa", "bbbb", "ccc"]
根据这篇文章 What regex can match sequences of the same character?
In [8]: re.findall('(\w)\1+', s)
Out[8]: []
我想我使用在线正则表达式解析器成功检索了这个模式。
答案 0 :(得分:4)
这里有两件事你应该考虑:
1)在定义正则表达式时使用原始字符串文字(或双重转义模式中的\
,以便\1
可以解析为反向引用而不是八进制字符表示法),并且
2)在此处使用re.finditer
获取整个匹配值,因为re.findall
将只获取带有捕获组的捕获值:
import re
s = 'aaabbbbccc'
print([x.group() for x in re.finditer(r'(\w)\1+', s)])
请参阅Python demo。
此处,x.group()
是存储在re.MatchObject
返回的re.finditer
内的完整匹配。