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

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

Клиент-серверный модуль для работы с регулярными выражениями в 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
подсказка

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