python正则表达式不正确匹配

时间:2017-03-06 20:44:20

标签: python regex

我有一个字符串

"aaabbbbccc"

我想要检索 ["aaa", "bbbb", "ccc"]

根据这篇文章 What regex can match sequences of the same character?

In [8]: re.findall('(\w)\1+', s)
Out[8]: []

我想我使用在线正则表达式解析器成功检索了这个模式。

1 个答案:

答案 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内的完整匹配。