Найти тему
SoftSAR

Как использовать регулярные выражения в Python

Оглавление

Регулярные выражения - это мощный инструмент для работы со строками, который позволяет находить, заменять или извлекать текст по определенному шаблону. В 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() - возвращает кортеж из двух элементов, содержащий начальную и конечную позиции совпадения

Пример использования регулярных выражений для поиска адресов электронной почты

-2
Example_1.py

В этом примере мы создаем регулярное выражение для поиска адресов электронной почты, используя функцию re.compile(). Затем мы используем метод findall() для поиска всех совпадений в тексте и выводим их на экран.

Пример использования регулярных выражений для поиска номера телефона

-3
Example_2.py

Регулярные выражения - это мощный инструмент, который может значительно упростить работу со строками. Однако они могут быть сложными и запутанными, поэтому требуют практики для эффективного использования. Надеемся, что эта статья помогла вам лучше понять, как работают регулярные выражения в Python. Удачи вам в изучении!

С уважением, Карян Армен.
Занимаюсь профессиональной разработкой прикладных программ на Python.
email SoftSAR@yandex.ru
Telegram @SoftSar_am