Перейти к основному содержимому

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

Клиент-серверный модуль для работы с регулярными выражениями в 1С на базе внешней компоненты RegEx1CAddin.

к сведению

Компонента подключается автоматически при первом вызове. Доступна на клиенте и на сервере. Асинхронные методы — только на клиенте.

Синхронные методы​

МетодОписаниеВозврат
ВерсияПодсистемы()Версия подсистемыСтрока
Совпадает(Строка, Выражение, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр)Проверка соответствия шаблонуБулево
НайтиСовпадения(Строка, Выражение, Иерарх = Ложь, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр)Поиск совпаденийСоответствие
КоличествоСовпадений(Строка, Выражение, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр)Количество совпаденийЧисло
Заменить(Строка, Выражение, Замена, ВсеСовп = Ложь, ИгнРег = Ложь, Комп = Неопр)Замена по шаблонуСтрока
КомпонентаРаботыСРегулярнымиВыражениями()Подключение и получение компонентыВнешняяКомпонентаОбъект
ВерсияКомпоненты(Комп = Неопр)Версия внешней компонентыСтрока
ОписаниеОшибкиКомпоненты(Комп)Последняя ошибка компонентыСтрока

Асинхронные методы (только клиент)​

МетодОписаниеПараметры 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
подсказка

Для интерактивного конструирования и тестирования регулярных выражений используйте Конструктор регулярных выражений.