На этом шаге мы закончим изучение этого вопроса.
Роль входных данных играет строковое значение, а задача состоит в поиске с помощью "нежадного" подхода всех комбинаций символов, начинающихся с символа 'p', заканчивающихся символом 'r' и включающих посередине между ними хотя бы одно вхождение символа 'e' (и, возможно, произвольное количество других символов)!
Подобные текстовые запросы встречаются очень часто, особенно в компаниях, занимающихся обработкой текста, распознаванием речи или машинным переводом (например, компаниях, разрабатывающих поисковые системы, социальные сети и видеоплатформы). Взгляните на пример 5.1.
## Зависимости import re ## Данные text = 'peter piper picked a peck of pickled peppers' ## Однострочник result = re.findall('p.*?e.*?r', text) ## Результат print(result)
Этот код выводит список всех подходящих фраз в тексте. Каких по-вашему?
Поисковый запрос регулярного выражения - "p.*?e.*?r". Рассмотрим его по частям. Мы ищем фразу, начинающуюся с символа 'p' и заканчивающуюся символом 'r'. Кроме того, между ними должно встречаться хотя бы одно вхождение символа 'e'. Кроме того, допускается произвольное количество символов (как пробельных, так и прочих). Поиск производится "нежадным" образом, с помощью ".*?", поэтому Python будет искать минимальное количество произвольных символов. Вот результат:
## Результат print(result) # ['peter', 'piper', 'picked a peck of pickled pepper']
Сравните этот результат с получаемым при использовании "жадного" регулярного выражения "p.*e.*r":
result = re.findall('p.*e.*r', text) print(result) # ['peter piper picked a peck of pickled pepper']
Первый "жадный" оператор "звездочка" "*" захватывает практически всю строку до конца.
На следующем шаге мы рассмотрим создание первого веб-скрапера с помощью регулярных выражений.