查找字符的最长连续序列

时间:2015-11-12 16:54:48

标签: python regex

假设我们有一个像'w q a a a a a e d a a'这样的字符串,我想找到长度至少为2的最长'a'序列,在上例中为'a a a a a'。我尝试了以下方法:

re.findall(r'(a a a*)', text)

但它只提供最短的匹配。然后我试了一下:

re.findall(r'([^a] a a a* [^a])', text)

但上面示例字符串的结果为空。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

那是因为你在a字符之间有空格。您可以使用与a和长度为5或更长的空格的任意组合匹配的字符类:

>>> re.findall(r'([a ]{5,})', text)
[' a a a a a ']

另请注意,整个正则表达式周围不需要捕获组。在这种情况下,您可以使用带有a和空格的非捕获组(以拒绝匹配短模式)和因为你只想要一个匹配,你可以使用re.search()

>>> M = re.search(r'(?:a ){2,}', text)
>>> 
>>> M.group(0)
'a a a a a '