假设我们有一个像'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)
但上面示例字符串的结果为空。我怎么能这样做?
答案 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 '