findall
не дает совпадающих совпадений по умолчанию. Однако это выражение:
>>> re.findall(r'(?=(\w\w))', 'hello')
['he', 'el', 'll', 'lo']
Здесь (?=...)
- это утверждение lookahead :
blockquote>
(?=...)
соответствует, если...
соответствует затем, но не потребляет ни одной из строк. Это называется ожидаемым утверждением. Например,Isaac (?=Asimov)
будет соответствовать'Isaac '
, только если за ним следует'Asimov'
.