Регулярные выражения - это мощный инструмент для работы со строками, который позволяет находить, заменять или извлекать текст по определенному шаблону. В Python регулярные выражения поддерживаются модулем re, который предоставляет различные функции и методы для работы с ними.
Синтаксис регулярных выражений
Регулярное выражение состоит из символов, которые могут быть обычными или специальными. Обычные символы соответствуют сами себе, например, a соответствует букве a. Специальные символы имеют особое значение и используются для задания шаблонов, например, . точка - соответствует любому символу, кроме перевода строки.
Специальные символы также называются метасимволами:
. - любой символ, кроме перевода строки
^ - начало строки
$ - конец строки
* - ноль или более повторений предыдущего символа
+ - одно или более повторений предыдущего символа
? - ноль или одно повторение предыдущего символа
{n} - ровно n повторений предыдущего символа
{n,m} - от n до m повторений предыдущего символа
[...] - любой из символов в скобках
[^...] - любой символ, кроме тех, что в скобках
| - логическое ИЛИ между двумя выражениями
(...) - группировка выражений
\ - экранирование специальных символов или обозначение специальных последовательностей
Специальные последовательности начинаются с обратного слеша \ и имеют следующий вид:
\d - любая цифра, то же, что [0-9]
\D - любой нецифровой символ, то же, что [^0-9]
\s - любой пробельный символ, то же, что [ \t\n\r\f\v]
\S - любой непробельный символ, то же, что [^ \t\n\r\f\v]
\w - любой буквенно-цифровой символ, то же, что [a-zA-Z0-9_]
\W - любой не буквенно-цифровой символ, то же, что [^a-zA-Z0-9_]
\b - граница слова, то есть переход от \w к \W или наоборот
\B - отсутствие границы слова
\A - начало строки, то же, что ^
\Z - конец строки, то же, что $
\n - перевод строки
\t - табуляция
Примеры регулярных выражений
a*b - ноль или более букв a, за которыми следует буква b
a+b - одна или более букв a, за которыми следует буква b
a?b - ноль или одна буква a, за которой следует буква b
a{3}b - ровно три буквы a, за которыми следует буква b
a{2,4}b - от двух до четырех букв a, за которыми следует буква b
[aeiou] - любая гласная буква
[^aeiou] - любая согласная буква
cat|dog - слово cat или слово dog
(cat|dog)+ - одно или более повторений слов cat или dog
\d{3}-\d{3}-\d{4} - номер телефона в формате xxx-xxx-xxxx
\w+@\w+\.\w+ - адрес электронной почты в формате xxx@xxx.xxx
Функции и методы модуля re
Модуль re предоставляет следующие функции для работы с регулярными выражениями:
re.compile(pattern) - компилирует регулярное выражение в объект, который можно использовать для поиска, замены или извлечения текста. Это ускоряет работу, если нужно использовать одно и то же выражение несколько раз.
re.search(pattern, string) - ищет первое совпадение регулярного выражения в строке и возвращает объект match или None, если совпадения нет.
re.match(pattern, string) - ищет совпадение регулярного выражения с началом строки и возвращает объект match или None, если совпадения нет.
re.fullmatch(pattern, string) - ищет совпадение регулярного выражения со всей строкой и возвращает объект match или None, если совпадения нет.
re.findall(pattern, string) - возвращает список всех совпадений регулярного выражения в строке.
re.finditer(pattern, string) - возвращает итератор по объектам match для всех совпадений регулярного выражения в строке.
re.sub(pattern, repl, string) - заменяет все совпадения регулярного выражения в строке на заданную строку repl и возвращает новую строку.
re.split(pattern, string) - разбивает строку по совпадениям регулярного выражения и возвращает список подстрок.
Объект Match и его методы
Когда функции re.search(), re.match(), re.fullmatch() находят совпадение, они возвращают объект match. Этот объект содержит информацию о найденном совпадении и предоставляет следующие методы:
- group() - возвращает строку, которая совпадает с регулярным выражением.
- start() и end() - возвращают начальную и конечную позиции совпадения в строке.
- span() - возвращает кортеж из двух элементов, содержащий начальную и конечную позиции совпадения
Пример использования регулярных выражений для поиска адресов электронной почты
В этом примере мы создаем регулярное выражение для поиска адресов электронной почты, используя функцию re.compile(). Затем мы используем метод findall() для поиска всех совпадений в тексте и выводим их на экран.
Пример использования регулярных выражений для поиска номера телефона
Регулярные выражения - это мощный инструмент, который может значительно упростить работу со строками. Однако они могут быть сложными и запутанными, поэтому требуют практики для эффективного использования. Надеемся, что эта статья помогла вам лучше понять, как работают регулярные выражения в Python. Удачи вам в изучении!
С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am