Статья Автор: Деникина Н.В., Деникин А.В.

Python. Регулярные выражения

Тренажёр: функции модуля re

Регулярка — это только шаблон. А вот что с ней делать, решают функции модуля: искать первое совпадение, все совпадения, проверять целиком, заменять, резать по шаблону. Начинающие часто путают search и match, не понимают, чем findall отличается от finditer. Этот тренажёр позволяет увидеть разницу собственными глазами: задайте шаблон и текст, а затем переключайтесь между функциями — всё остальное подстроится автоматически.

Как работает проверка. Тренажёр использует JavaScript-движок регулярок — он почти совпадает с Python-ным. Синтаксис именованных групп (?P<name>...) автоматически переводится в (?<name>...), а в строке замены \1 и \g<name> — в соответствующие JS-эквиваленты. Пишите шаблоны по-питоновски.

Шаблон, текст и функция

шаблон
текст
замена
флаги
 
Введите шаблон и текст — увидите результат.
 
 
Подсветка в тексте
 
совпадение

Готовые примеры

Нажмите на пример — шаблон, текст и функция подставятся автоматически.

Шпаргалка по функциям

Возвращают Match или None:

  • search(p, s) — первое совпадение где угодно в строке.
  • match(p, s) — совпадение в начале строки (но не обязательно до конца).
  • fullmatch(p, s) — шаблон должен накрыть всю строку. Удобно для валидации.

Возвращают коллекцию совпадений:

  • findall(p, s) — список. Без групп — список строк. С одной группой — список строк из этой группы. С двумя и более — список кортежей.
  • finditer(p, s) — итератор Match-объектов. Для каждого можно узнать .group(), .span(), группы. Используется, когда нужны позиции в тексте.

Преобразуют текст:

  • sub(p, repl, s) — заменяет все совпадения. В repl работают обратные ссылки \1, \g<name>. Вместо строки можно передать функцию.
  • split(p, s) — режет строку по шаблону. Если в шаблоне есть группы — содержимое групп попадает в результат между кусками.
Печать