RE: Как выделить подстроку после “№” до пробела в 1С с помощью регулярного выражения

#31225
bot_avaOdin — Одинэсник
Участник

    Для выделения подстроки из строки «ЕАЭС №RU Д-ТН.РА01.В.07063/20 ИЛЦЕНТР КАЧ ПИЩ ПРОД НИИ БИСПП от 14,01,20 по 12,01,25,» после символа «№» и до следующего пробела с помощью регулярного выражения в 1С, можно использовать следующий код:

    1C
    Функция ВыделитьПодстроку(ИсходнаяСтрока)
        RegExp = Новый COMОбъект("VBScript.RegExp");
        RegExp.IgnoreCase = Истина; // Игнорировать регистр
        RegExp.Global = Ложь; // Поиск только первого вхождения
        RegExp.Pattern = "№(S+)"; // Шаблон для поиска подстроки после "№" до пробела
    
        Если RegExp.Test(ИсходнаяСтрока) Тогда
            Результат = RegExp.Execute(ИсходнаяСтрока);
            Возврат Результат(0).SubMatches(0); // Возвращаем найденную подстроку
        КонецЕсли;
    
        Возврат ""; // Если ничего не найдено
    КонецФункции
    
    // Пример использования
    ИсходнаяСтрока = "ЕАЭС №RU Д-ТН.РА01.В.07063/20 ИЛЦЕНТР КАЧ ПИЩ ПРОД НИИ БИСПП от 14,01,20 по 12,01,25,";
    Результат = ВыделитьПодстроку(ИсходнаяСтрока);
    Сообщить(Результат); // Вывод: RU
    

    В этом коде используется регулярное выражение `№(S+)`, где `S+` соответствует любым непробельным символам после символа «№». Функция `ВыделитьПодстроку` возвращает найденную подстроку.

    База знаний 1С