Регулярные выражения: базовое знакомство для новичков

Перевод
1
5409
Добавить в избранное

Знакомьтесь, регулярные выражения! Из статьи вы почерпнёте основные идеи, распространённые шаблоны и функции с примерами.

Регулярные выражения: базовое знакомство для новичков

Регулярные выражения – мощный инструмент таких языков, как Python, R, Java, JavaScript, PHP, Scala и не только.

Уверенное понимание регулярок поможет разработчику производить операции с данными и текстом. Например, в обработке естественного языка.

Регулярные выражения: базовое знакомство для новичков

Не бойтесь этих кракозябр: регулярные выражения принесут вам пользу, как только вы начнёте понимать и применять их.

Что такое регулярные выражения?

Регулярное выражение – это текстовая строка, которая определяет шаблон поиска:

Подобные шаблоны используются для четырёх главных задач:

  • Найти текст в большом объёме текстовых данных.
  • Проверить строку на совпадения с желаемым форматом.
  • Заменить и вставить текст.
  • Разделить строки.

Посмотрим на основные шаблоны регулярок.

Основные шаблоны

Вернёмся к примеру:

Здесь «w» означает слово (от англ. word). «+» означает «ещё одно». Эта регулярка сравнивает символы слов, включая ASCII, цифры и нижнее подчеркивание. Предположим, что нам нужно сравнить первое слово в строке. Сначала импортируем модуль re:

Затем мы определяем шаблон и юзаем функцию re.match() для определения первого слова:

Вот основные символы, которыми вы будете оперировать:

Регулярные выражения: базовое знакомство для новичков

Некоторые распространённые шаблоны:

Регулярные выражения: базовое знакомство для новичков

Что с этим делать? Всё просто! Например, вы можете использовать такие паттерны для проверки вводимых значений в input-поля:

  • Full name – ^[A-Z]{1}[A-Za-z 0-9-]{1,12}$
  • email – [\w-][email protected]([\w-]+\.)+[\w-]+
  • Телефон (с буквами, как принято во многих странах) – ^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*[a-z]*$

Теперь у вас есть немного готовых регулярных выражений. Время двигаться к важным функциям.

Функция match()

Эта функция сопоставляет шаблон со строкой. Она возвращает объект match при успехе и None – в случае неудачи:

Функция findall()

Возвращает список всех экземпляров шаблона в строке. Совпадения возвращаются в порядке слева направо:

Функция search()

Функция search() ищет экземпляры шаблона в строке. Она возвращает объект match при успехе, None – при неудаче. Похожа на функцию match(), но ищет по всей строке:

Функция split()

Разделяет строку по местонахождению шаблона:

Некоторые мысли

Регулярные выражения: базовое знакомство для новичков

Несмотря на свою пользу, регулярные выражения – это инструмент, которым легко злоупотребить.

На заметку:

  • Начинайте с малого. Используйте регулярные выражения ответственно. Разделите их на более мелкие, если нужно. Вам ни к чему одна огромная регулярка в несколько строк: это существенно снизит читаемость кода.
  • Комментируйте регулярки! Никто не хочет тратить время на вашего монстра из 20 строчек, пытаясь понять, что это значит.

Заключение

Регулярные выражения – инструмент, который требует практики. В интернете вы найдёте много ресурсов по регулярным выражениям. Например, официальная документация языка Python.

Делитесь своими регулярками в комментариях!

Ищете с чего начать?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Один комментарий

  1. Василий Байкалов

    Если вы знаете, что задачу можно решить с помощью регулярного выражения, то у вас есть две задачи!

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