, совпадения для которого вам нужно найти, и строку-
источник, в которой следует выполнить поиск. Простой пример использования выглядит так:
>result = re.match('You', 'Young Frankenstein')
В этом примере строка 'You' является шаблоном, а 'Young Frankenstein' — источником, строкой, которую вы хотите проверить. Функция match() проверяет, начинается ли источник с шаблона.
Для более сложных проверок вам нужно скомпилировать шаблон, чтобы ускорить поиск:
>youpattern = re.compile('You')
Далее вы можете выполнить проверку с помощью скомпилированного шаблона:
>result = youpattern.match('Young Frankenstein')
Функция match() — это не единственный способ сравнить шаблон и источник, существует еще несколько методов.
• search() возвращает первое совпадение, если таковое имеется.
• findall() возвращает список всех непересекающихся совпадений, если таковые имеются.
• split() разбивает источник на совпадения с шаблоном и возвращает список всех фрагментов строки.
• sub() принимает аргумент для замены и заменяет все части источника, совпавшие с шаблоном, на значение этого аргумента.
Точное совпадение с помощью функции match()
Начинается ли строка 'Young Frankenstein' со слова 'You'? Рассмотрим пример кода с комментариями:
>>>> 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
Кратко объясню, как работает наш новый шаблон:
• символ. означает любой символ;
• символ * означает любое количество предыдущих элементов. Если объединить символы.*, они будут означать любое количество символов (даже ноль);
• 'Frank' — это фраза, которую мы хотим найти в любом месте строки.
Функция match() вернула строку, в которой нашлось совпадение с шаблоном.*Frank: 'Young Frank'.
Первое совпадение, найденное с помощью функции search()