Регулярные выражения (regex или regexp) — мощные инструменты для поиска шаблонов в строках. Модуль re
в Python предлагает надежный функционал для операций с regex, где подстановочные знаки играют решающую роль. В этой статье рассматривается, как эффективно использовать подстановочные знаки с функцией re.sub()
для различных задач манипулирования строками.
Содержание
- Основные подстановки Regex с подстановочными знаками
- Расширенное использование подстановочных знаков и квантификаторы
- Комбинирование подстановочных знаков для сложных шаблонов
- Примеры из реального мира: извлечение адресов электронной почты и номеров телефонов
- Заключение
Основные подстановки Regex с подстановочными знаками
Функция re.sub()
является основополагающей для подстановок regex. Её синтаксис: re.sub(pattern, replacement, string, count=0, flags=0)
. pattern
— это регулярное выражение, replacement
— подставляемая строка, string
— входные данные, count
ограничивает количество подстановок, а flags
изменяют поведение сопоставления. Подстановочные знаки значительно повышают гибкость pattern
.
Заменим все гласные в строке на «X»:
import re
text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Оригинал: {text}")
print(f"Заменено: {replaced_text}")
[aeiou]
— это подстановочный набор символов, соответствующий любой гласной (без учёта регистра из-за re.IGNORECASE
).
Расширенное использование подстановочных знаков и квантификаторы
re.sub()
поддерживает сложные подстановочные знаки. Заменим последовательности из одной или более цифр на «NUMBER»:
import re
text = "Мой номер телефона 123-456-7890, а мой почтовый индекс 90210."
replaced_text = re.sub(r"d+", "NUMBER", text)
print(f"Оригинал: {text}")
print(f"Заменено: {replaced_text}")
d+
соответствует одной или более цифрам (d
соответствует цифре, +
означает одно или более повторений).
Таблица, суммирующая основные подстановочные знаки:
Подстановочный знак | Описание |
---|---|
. |
Соответствует любому символу, кроме символа новой строки. |
* |
Соответствует нулю или более вхождениям предшествующего элемента. |
+ |
Соответствует одному или более вхождениям предшествующего элемента. |
? |
Соответствует нулю или одному вхождению предшествующего элемента. |
[] |
Определяет набор символов (например, [abc] ). |
[^] |
Определяет отрицательный набор символов (например, [^abc] ). |
() |
Создаёт группу захвата. |
|
Экранирует специальные символы (например, . соответствует буквально точке). |
Комбинирование подстановочных знаков для сложных шаблонов
Комбинирование подстановочных знаков создаёт мощные шаблоны. Заменим слова, начинающиеся с «a», за которыми следуют любые символы:
import re
text = "A apple a day keeps the doctor away."
replaced_text = re.sub(r"aw*", "WORD", text, flags=re.IGNORECASE)
print(f"Оригинал: {text}")
print(f"Заменено: {replaced_text}")
aw*
соответствует «a», за которым следует ноль или более символов слова (w
).
Примеры из реального мира: извлечение адресов электронной почты и номеров телефонов
re.sub()
отлично справляется со сложными шаблонами. Заменим адреса электронной почты на «EMAIL»:
import re
text = "Свяжитесь с нами по адресу [email protected] или [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Оригинал: {text}")
print(f"Заменено: {replaced_text}")
Это regex соответствует общему формату электронной почты.
Заключение
Функция re.sub()
в сочетании с подстановочными знаками regex предлагает гибкий и эффективный метод манипулирования строками в Python. Овладение этими методами ценно для задач обработки текста и очистки данных. Тщательное построение regex имеет решающее значение для предотвращения непреднамеренных замен. Экспериментирование и понимание нюансов подстановочных знаков являются ключом к эффективному манипулированию строками.