Регулярные выражения
Клиент-серверный модуль для работы с регулярными выражениями в 1С на базе внешней компоненты RegEx1CAddin.
- Модуль: УИ_РегулярныеВыраженияКлиентСервер
- Репозиторий модуля: github.com/cpr1c/RegEx1C_cfe
- Внешняя компонента: RegEx1CAddin —
AddIn.RegEx1C_cfe.RegEx - Описание API: README репозитория
- Лицензия: MIT
к сведению
Компонента подключается автоматически при первом вызове. Доступна на клиенте и на сервере. Асинхронные методы — только на клиенте.
Синхронные методы
| Метод | Описание | Возврат |
|---|---|---|
ВерсияПодсистемы() | Версия подсистемы | Строка |
Совпадает(Строка, Выражение, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр) | Проверка соответствия шаблону | Булево |
НайтиСовпадения(Строка, Выражение, Иерарх = Ложь, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр) | Поиск совпадений | Соответствие |
КоличествоСовпадений(Строка, Выражение, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр) | Количество совпадений | Число |
Заменить(Строка, Выражение, Замена, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр) | Замена по шаблону | Строка |
КомпонентаРаботыСРегулярнымиВыражениями() | Подключение и получение компоненты | ВнешняяКомпонентаОбъект |
ВерсияКомпоненты(Комп = Неопр) | Версия внешней компоненты | Строка |
ОписаниеОшибкиКомпоненты(Комп) | Последняя ошибка компоненты | Строка |
Асинхронные методы (только клиент)
| Метод | Описание | Параметры callback'а |
|---|---|---|
НачатьПолучениеКомпоненты(ОписаниеОповещения) | Получение компоненты | <Компонента> — ВнешняяКомпонентаОбъект |
НачатьПолучениеВерсииКомпоненты(ОписаниеОповещения, Комп = Неопр) | Версия компоненты | <Версия> — Строка |
НачатьНахождениеСовпадений(ОписаниеОповещения, Строка, Выражение, ...) | Поиск совпадений | <Совпадения> — Соответствие |
НачатьПолучениеКоличестваСовпадений(ОписаниеОповещения, Строка, Выражение, ...) | Количество совпадений | <Количество> — Число |
НачатьПолучениеПризнакаСовпадает(ОписаниеОповещения, Строка, Выражение, ...) | Проверка соответствия | <Соответствует> — Булево |
НачатьЗамену(ОписаниеОповещения, Строка, Выражение, Замена, ...) | Замена по шаблону | <Результат> — Строка |
НачатьПолучениеОписанияОшибкиКомпоненты(ОписаниеОповещения, Комп) | Ошибка компоненты | <Ошибка> — Строка |
Полное описание параметров и возвращаемых значений см. в README репозитория модуля.
Примеры
Проверка соответствия строки шаблону
Результат = УИ_РегулярныеВыраженияКлиентСервер.Совпадает(
"info@example.com",
"^[\w\.\-]+@[\w\-]+\.[\w]{2,4}$"
); // Истина
Поиск всех совпадений с обходом результатов
Совпадения = УИ_РегулярныеВыраженияКлиентСервер.НайтиСовпадения(
"Товар: A-001, A-002, B-003",
"[A-Z]-\d+",
,
Истина // ВсеСовпадения
);
Для каждого Совпадение Из Совпадения Цикл
Сообщить(Совпадение.Ключ);
КонецЦикла;
// A-001
// A-002
// B-003
Поиск с иерархическим обходом подгрупп
Совпадения = УИ_РегулярныеВыраженияКлиентСервер.НайтиСовпадения(
"Цена: 1500 руб.",
"(\d+)\s(руб|\\$|€)",
Истина, // ИерархическийОбходРезультатов
Истина, // ВсеСовпадения
Ложь // ИгнорироватьРегистр
);
Для каждого Совпадение Из Совпадения Цикл
Сообщить("Целое: " + Совпадение.Ключ);
Подгруппы = Совпадение.Значение;
Если Подгруппы <> Неопределено Тогда
Для Каждого Подгруппа Из Подгруппы Цикл
Сообщить(" Подгруппа: " + Подгруппа);
КонецЦикла;
КонецЕсли;
КонецЦикла;
// Целое: 1500 руб.
// Подгруппа: 1500
// Подгруппа: руб
Замена дат с перестановкой фрагментов
Результат = УИ_РегулярныеВыраженияКлиентСервер.Заменить(
"01.01.2024, 15.03.2024",
"(\\d{2})\\.(\\d{2})\\.(\\d{4})",
"$3-$2-$1",
Истина // ВсеСовпадения
);
// 2024-01-01, 2024-03-15
Подсчёт количества вхождений
КоличествоСовпадений = УИ_РегулярныеВыраженияКлиентСервер.КоличествоСовпадений(
"Раз, два, три, четыре, пять",
"\w+",
Истина // ВсеСовпадения
);
Сообщить(КоличествоСовпадений); // 5
подсказка
Для интерактивного конструирования и тестирования регулярных выражений используйте Конструктор регулярных выражений.