Шаг 75.
Однострочники Python. Регулярные выражения. Поиск простых комбинаций символов в строковых значениях. Код и принцип работы

    На этом шаге мы закончим изучение этого вопроса.

Код

    Роль входных данных играет строковое значение, а задача состоит в поиске с помощью "нежадного" подхода всех комбинаций символов, начинающихся с символа 'p', заканчивающихся символом 'r' и включающих посередине между ними хотя бы одно вхождение символа 'e' (и, возможно, произвольное количество других символов)!

    Подобные текстовые запросы встречаются очень часто, особенно в компаниях, занимающихся обработкой текста, распознаванием речи или машинным переводом (например, компаниях, разрабатывающих поисковые системы, социальные сети и видеоплатформы). Взгляните на пример 5.1.


Пример 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']

    Первый "жадный" оператор "звездочка" "*" захватывает практически всю строку до конца.

    На следующем шаге мы рассмотрим создание первого веб-скрапера с помощью регулярных выражений.




Предыдущий шаг Содержание Следующий шаг