Как уже упоминали другие, re.match
начинается с начала строки для сопоставления и проверяет только то, что необходимо. Обратите внимание: match='A cat'
в конце строкового представления объекта обозначает то, что было найдено: r'(\w+) (\w+)'
из "A cat jumpped over a hat"
.
Если вы добавите $
в конец вашего паттерна, указывая, что строка для соответствия должна заканчиваться там, это не приведет к совпадению. И если бы вы взяли тот же шаблон и сократили его до двух слов, он бы снова совпадал:
>>> re.match(r'(\w+) (\w+)', "A cat jumpped over a hat")
<_sre.SRE_Match object; span=(0, 5), match='A cat'>
>>> re.match(r'(\w+) (\w+)$', "A cat jumpped over a hat")
>>> re.match(r'(\w+) (\w+)$', "A cat")
<_sre.SRE_Match object; span=(0, 5), match='A cat'>