RUDE

Регулярные выражения Python - шпаргалка

CoderStudio, 22.04.2022 22:08
Регулярные выражения Python - шпаргалка
Фото: maxpixel.net

Регулярные выражения Python - шпаргалка

Много примеров кода + полезные советы

Регулярные выражения - чрезвычайно полезный инструмент, и как любой разработчик, я часто использую его при работе с текстами. Поскольку я всегда забываю синтаксис, связанный с регулярными выражениями, я подумал, что создание простой шпаргалки может помочь мне и, возможно, другим :)

Наиболее полезные методы re в Python и различия между ними

Напомним, что модуль re реализует функциональность регулярных выражений в Python.

  • re.match: сопоставляет regex-шаблон сначаломстроки (возвращается: re.Match).
  • re.fullmatch: соответствует шаблону regexвсейстроке(возвращается: re.Match).
  • re.search:ищет в строке наличие regex-шаблона (возвращается: re.Match )
  • re.sub:заменяет вхождения regex-шаблона, найденного в строке, поиском шаблона, как в re.search (возвращается: string)
  • re.findall: поиск всех вхождений regex-шаблона в строке, поиск шаблона как вre.search (возвращается: список строк)
  • re.split: разбивает строку на вхождения regex-шаблона (возвращается: список строк). ❗️ обратите внимание на возвращаемые пустые строки ❗️.

Специальные метасимволы

Метасимволы повтора

В таблице ниже приведено количество совпадений (жадных) повторений, которые re module выполняет для предыдущего регулярного выражения. Жадный" означает, что модуль re будет сопоставлять как можно больше повторений.

Классы полезных символов

Чрезвычайно полезный совет: группировка и выделение групп

Группировка позволяет вам не только находить текстовые последовательности внутри строк, но и извлекать подпоследовательности в соответствии с группами, которые вы определили в шаблоне.

Вы можете определить группы в шаблоне, используя круглые скобки - (), и извлечь группы из совпавших последовательностей, вызвав метод group() объекта re.Match.

Например, допустим, мы хотим найти в тексте электронное письмо, но также хотим легко извлечь из него имя пользователя, домен и расширение. Поэтому, если мы получим следующий текст: "abc@gmail.com", мы хотим (1) определить, что это письмо (в соответствии с шаблоном) и (2) определить, что имя пользователя в этом письме - "abc", доменное имя - "gmail", а расширение - "com". Сначала определим простой шаблон, который обнаружит это письмо. Обратите внимание, я буду использовать упрощенный шаблон, который предполагает, что в каждом компоненте письма есть только буквенно-цифровые символы, что не верно в реальной жизни, но это будет работать для нашего примера группировки.

Теперь я добавлю группы в шаблон. Технически, я просто добавлю скобки вокруг различных частей моего шаблона: имя пользователя, домен, расширение:

Теперь мы готовы сопоставить наш шаблон:

И вот тут-то и проявляется магия групп! Мы можем не только получить совпавший текст, но и извлечь отдельные группы по индексу группы, определенному в шаблоне, вот так:

Мило, да?

Кстати, group(0) возвращает строку, которая представляет все совпадение. В нашем случае: "your_name@gmail.com"

На этом пока все, друзья. Счастливого программирования!