Python Programming

Покорение подстановочных знаков регулярных выражений с помощью re.sub() в Python

Spread the love

Регулярные выражения (regex или regexp) — мощные инструменты для поиска шаблонов в строках. Модуль re в Python предлагает надежный функционал для операций с regex, где подстановочные знаки играют решающую роль. В этой статье рассматривается, как эффективно использовать подстановочные знаки с функцией re.sub() для различных задач манипулирования строками.

Содержание

Основные подстановки 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 имеет решающее значение для предотвращения непреднамеренных замен. Экспериментирование и понимание нюансов подстановочных знаков являются ключом к эффективному манипулированию строками.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *