Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 145

с комментариями:

>>> 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())