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

Регуля́рные выраже́ния (англ.regular expressions) — формальный язык, используемый в компьютерных программах, работающих с текстом, для поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.

Регулярные выражения (regexp) применяются в различных областях программирования и текстового редактирования для обработки и поиска текста с использованием шаблонов. Некоторые основные области применения regexp включают следующие:
1. Поиск и замена текста: Регулярные выражения позволяют найти и заменить определенные строки или шаблоны текста в большом объеме данных. Например, вы можете использовать regexp для замены всех ссылок в веб-странице или для поиска и замены определенных слов в текстовом документе.
2. Валидация форматов: RegExp можно использовать для проверки соответствия введенных пользователем данных определенному формату. Например, вы можете использовать regexp для проверки правильности ввода электронной почты или номера телефона.
3. Извлечение данных: Регулярные выражения могут использоваться для извлечения определенных данных из текста. Например, вы можете использовать regexp для извлечения всех URL-адресов из веб-страницы или для получения всех чисел из текстового файла.
4. Фильтрация и обработка данных: RegExp могут быть полезны для фильтрации или обработки данных в определенном формате. Например, вы можете использовать regexp для удаления всех тегов HTML из текста или для преобразования даты и времени в другой формат.
5. Анализ логов: RegExp можно применить для анализа и обработки лог-файлов, в которых записываются действия или события. Например, вы можете использовать regexp для выделения и анализа определенных типов ошибок или для поиска определенных событий.
Это лишь некоторые примеры применения regexp, и возможности их использования зависят от конкретной задачи и языка программирования, в котором они применяются.

Набор утилит (включая редактор sed и фильтр grep), поставляемых в дистрибутивах UNIX, одним из первых способствовал популяризации регулярных выражений для обработки текстов. Многие современные языки программирования имеют встроенную поддержку регулярных выражений. Среди них PerlJava, PHPJavaScript, языки платформы .NET Framework, Python, Tcl, RubyLua, Gambas, C++, Delphi, D, Haxe и некоторые другие.

Разновидности регулярных выражений:

Базовые регулярные выражения POSIX

(англ. basic regular expressions (BRE)). Традиционные регулярные выражения UNIX. Синтаксис базовых регулярных выражений на данный момент определён POSIX как устаревший, но он до сих пор широко распространён из соображений обратной совместимости. Многие UNIX-утилиты используют такие регулярные выражения по умолчанию.

В данную версию включены метасимволы:

  • .;
  • [ ];
  • [^ ];
  • ^ (действует только в начале выражения);
  • $ (действует только в конце выражения);
  • *;
  • { } — первоначальный вариант для { };
  • ( ) — первоначальный вариант для ( );
  • n, где n — номер от 1 до 9.

Особенности:

  • Звёздочка должна следовать после выражения, соответствующего единичному символу. Пример: [xyz]*.
  • Выражение (блок)* следует считать неправильным. В некоторых случаях оно соответствует нулю или более повторений строки блок. В других оно соответствует строке блок*.
  • Внутри символьного класса специальные значения символов, в основном, игнорируются. Особые случаи:
    • Чтобы добавить символ ^ в набор, его следует поместить туда не первым.
    • Чтобы добавить символ - в набор, его следует поместить туда первым или последним. Например:
      • шаблон DNS-имени, куда могут входить буквы, цифры, минус и точка-разделитель: [-0-9a-zA-Z.];
      • любой символ, кроме минуса и цифры: [^-0-9].
    • Чтобы добавить символ [ или ] в набор, его следует поместить туда первым. Например:
      • [][ab] соответствует ][ или b.

Расширенные регулярные выражения POSIX

(англ.extended regular expressions (ERE)). Синтаксис в основном аналогичен традиционному.

  • Отменено использование обратной косой черты для метасимволов { } и ( ).
  • Обратная косая черта перед метасимволом отменяет его специальное значение.
  • Отвергнута теоретически нерегулярная конструкция n.
  • Добавлены метасимволы +?|.

Обсуждение закрыто.