>>> match = re.findall(r'\w\w', 'hello') >>> print match ['he', 'll']
由于\ w \ w表示两个字符,因此应使用'he'和'll‘。但是,为什么“ el”和“ lo” 与正则表达式不匹配?
\ w \ w
'he'
'll
“ el”
“ lo”
>>> match1 = re.findall(r'el', 'hello') >>> print match1 ['el'] >>>
findall默认情况下不会产生重叠匹配。但是,此表达式可以:
findall
>>> re.findall(r'(?=(\w\w))', 'hello') ['he', 'el', 'll', 'lo']
这(?=...)是一个前瞻性断言:
(?=...)
(?=...)如果…下一个匹配,则匹配,但不使用任何字符串。这称为先行断言。例如, 仅在后跟Isaac (?=Asimov)时匹配。'Isaac ''Asimov'
Isaac (?=Asimov)
'Isaac ''Asimov'