Шаг 33.
Язык программирования Go.
Функции пакета regexp

    На этом шаге рассмотрим функции пакета regexp для работы со строками в Go.

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

    Пакет regexp представляет собой реализацию механизма регулярных выражений RE2 Расса Кокса (Russ Cox). Это быстрый механизм, поддерживающий возможность выполнения в многопоточных программах. В механизме RE2 не выполняются возвраты (backtracking), что гарантирует линейное увеличение времени выполнения O(n), где n – длина сопоставляемой строки, тогда как в механизмах с возвратами время выполнения может возрастать по экспоненте O(n2). Высокая производительность получена в основном за счет отказа от поддержки обратных ссылок. Однако это ограничение обычно легко можно обойти за счет применения функций из пакета regexp.

    В табл. 1 перечислены функции из пакета regexp, включая четыре функции, создающие значения типа *regexp.Regexp. Переменные p и s имеют тип string, где p – шаблон регулярного выражения.

Таблица 1. Функции из пакета regexp
Функция Описание/результат
regexp.Match(p, b) true и nil, если шаблону p соответствует b типа []byte
regexp.MatchReader(p, r) true и nil, если шаблону p соответствует текст, возвращаемый значением r типа io.RuneReader
regexp.MatchString(p, s) true и nil, если строка s соответствует шаблону p
regexp.QuoteMeta(s) Строка, в которой все метасимволы регулярных выражений надежно экранированы
regexp.Compile(p) Значение *regexp.Regexp и nil в случае успешной компиляции шаблона p
regexp.CompilePOSIX(p) Значение *regexp.Regexp и nil в случае успешной компиляции шаблона p
regexp.MustCompile(p) Значение *regexp.Regexp в случае успешной компиляции шаблона p, иначе возникает аварийная ситуация
regexp.MustCompilePOSIX(p) Значение *regexp.Regexp в случае успешной компиляции шаблона p, иначе возникает аварийная ситуация

    На следующем шаге рассмотрим экранированные последовательности, поддерживаемые пакетом regexp.


Предыдущий шаг Содержание Следующий шаг