Регулярные выражения на 1С
Разработка - Математика и алгоритмы
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Подсистема 1С для работы с регулярными выражениями
Вдохновившись материалами книг по алгоритмам и структурам данных, я сделал подсистему работы с регулярными выражениями для 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С. Отрабатывает на клиенте и сервере (методы глобального контекста в 8.3.23 доступны только на сервере).
В основе движка подсистемы недетерминированный конечный автомат. 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");
Текст =
"Белеет парус одинокой
|В тумане моря голубом. —
|Что ищет он в стране далекой?
|Что кинул он в краю родном?";
Вхождения = Регулярка.Вхождения(Процессор, Текст);
PS
Надеюсь, будет хватать времени на развитие проекта. Буду благодарен помощи заинтересованных.
Бесплатно Регулярку скачать можно тут. А если хотите выразить благодарность в виде SM – с радостью буду за них приобретать на Инфостарте разработки коллег.
Вступайте в нашу телеграмм-группу Инфостарт