/1c_regexp

Работа с регулярными выражениями средствами платформы 1С:Предриятие

Primary Language1C EnterpriseMIT LicenseMIT

Подсистема "Регулярка"

Работа с регулярными выражениями средствами платформы 1С:Предриятие

Доступный функционал:

  • построение процессора регулярного выражения по шаблону
  • проверка полного соответствия текста регулярному выражению
  • поиск вхождений в тексте по регулярному выражению

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

  • операции: |, ()
  • квантификаторы: *, +, ?, {n}, {, n}, {n, }, {n, m}
  • символы: ., \, \t, \n, \r, \f, \a, \e, \xhh, \uhhhh
  • классы символов: [abc], [^x-z]
  • предопределённые классы символов: \d, \D, \h, \H, \s, \S, \v, \V, \w, \W

Подсистема обходится исключительно средствами платформы 1С. Отрабатывает на клиенте и сервере.

В основе движка подсистемы недетерминированный конечный автомат. PDF презентации по материалам книги Роберта Сэджвика и Кевина Уэйна.

Разрабатывается на платформах 8.3.21.1302 и 8.3.10.2667

Требуемая минимальная версия: 8.3.6

Требуемая минимальная версия расширения: 8.3.9

Ограничения платформы можно существенно снизить вплоть до 8.1, избавившись от типов Фиксированных коллекций и функции СтрСоединить.

Пример кода

Проверка соответствия всей строки шаблону (процессор можно переиспользовать):

Шаблон = "(A*B|\d)D";
Процессор = Регулярка.ПроцессорРаспознавания(Шаблон);

Сообщить(Регулярка.Распознано(Процессор, "D")); // Ложь
Сообщить(Регулярка.Распознано(Процессор, "3D")); // Истина
Сообщить(Регулярка.Распознано(Процессор, "BD")); // Истина
Сообщить(Регулярка.Распознано(Процессор, "AD")); // Ложь
Сообщить(Регулярка.Распознано(Процессор, "AAAAAABD")); // Истина

Поиск вхождений в тексте:

Процессор = Регулярка.ПроцессорРаспознавания("\n");

Текст =
    "Белеет парус одинокой
    |В тумане моря голубом. —
    |Что ищет он в стране далекой?
    |Что кинул он в краю родном?";

Вхождения = Регулярка.Вхождения(Процессор, Текст);