>>> match = re.findall(r\'\\w\\w\', \'hello\')
>>> print match
[\'he\', \'ll\']
Since \\w\\w means two characters, \'he\' and \'l
findall doesn't yield overlapping matches by default. This expression does however:
>>> re.findall(r'(?=(\w\w))', 'hello')
['he', 'el', 'll', 'lo']
Here (?=...) is a lookahead assertion:
(?=...)matches if...matches next, but doesn’t consume any of the string. This is called a lookahead assertion. For example,Isaac (?=Asimov)will match'Isaac 'only if it’s followed by'Asimov'.