>>> import re
>>> source = 'Young Frankenstein'
>>> m = re.match('You', source) # функция начинает работать с начала источника
>>> if m: # функция возвращает объект; делайте это, чтобы увидеть, что совпало
... print(m.group())
...
You
>>> m = re.match('^You', source) # якорь в начале строки делает то же самое
>>> if m:
... print(m.group())
...
You
Как насчет 'Frank'?
>>> m = re.match('Frank', source)
>>> if m:
... print(m.group())
...
В этот раз функция match() не вернула ничего, и оператор if не запустил опера-
тор print. Как я говорил ранее, функция match() работает только в том случае, если
шаблон находится в начале источника. Но функция search() ищет шаблон в любом
месте источника:
>>> m = re.search('Frank', source)
>>> if m:
... print(m.group())
...
Frank
Изменим шаблон:
>>> m = re.match('.*Frank', source)
>>> if m: # match returns an object
... print(m.group())
...
Young Frank
194
Глава 7. Работаем с данными профессионально
Кратко объясню, как работает наш новый шаблон:
символ . означает любой символ;
символ * означает любое количество предыдущих элементов. Если объединить
символы .*, они будут означать любое количество символов (даже ноль);
'Frank' — это фраза, которую мы хотим найти в любом месте строки.
Функция match() вернула строку, в которой нашлось совпадение с шаблоном
.*Frank: 'Young Frank'.
Первое совпадение, найденное
с помощью функции search()
Вы можете использовать функцию search(), чтобы найти шаблон 'Frank' в любом
месте строки-источника 'Young Frankenstein', не прибегая к использованию симво-
ла подстановки .*:
>>> m = re.search('Frank', source)
>>> if m: # функция search возвращает объект
... print(m.group())