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

1. Самоделкин 2 29.01.21 13:33 Сейчас в теме
Здравствуйте!
Есть код:
&НаКлиенте
Процедура Команда(Команда)
	
    RegExp = Новый COMОбъект("VBScript.RegExp");
    
    RegExp.IgnoreCase = Ложь; //Игнорировать регистр
    RegExp.Global = Истина; //Поиск всех вхождений шаблона
    RegExp.MultiLine = Ложь; //Многострочный режим
    
    RegExp.Pattern = "^([0-9a-zA-Z.,-]+)\s(.+)\s+([0-9\.,]+)\s*(р|руб)\.?$";
    Matches=RegExp.Execute("6507FR4	Бампер передний Datsun mi-DO	626515PA0F	4180,00 Руб");
	
        ЧислоВхождений=Matches.Count();
    Если ЧислоВхождений>0 Тогда 
        Для к = 0 По ЧислоВхождений-1 Цикл
            Match = Matches.Item(к);
            Сообщить("Найшел:  "+ Match.Value);
        КонецЦикла;
    Иначе
        Сообщить("Ничего не нашел!");
    КонецЕсли;
КонецПроцедуры
Показать

В 7.7 выражение:
"^([0-9a-zA-Z.,-]+)\s(.+)\s+([0-9\.,]+)\s*(р|руб)\.?$"
работало без проблем, а вот в 8.3 пишет:
"Ничего не нашел!".
Помогите решить данную проблему. Может дело в самой процедуре?
По теме из базы знаний
Найденные решения
2. na688 29.01.21 21:37 Сейчас в теме
А зачем сделали RegExp.IgnoreCase = Ложь? Никогда не найдет если регистр не совпадает.
Либо
RegExp.IgnoreCase = Истина; 

Либо
RegExp.Pattern = "^([0-9a-zA-Z.,-]+)\s(.+)\s+([0-9\.,]+)\s*(р|Руб)\.?$";

если у вас в разбираемой строке всегда "Руб" с заглавной.
Самоделкин; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. na688 29.01.21 21:37 Сейчас в теме
А зачем сделали RegExp.IgnoreCase = Ложь? Никогда не найдет если регистр не совпадает.
Либо
RegExp.IgnoreCase = Истина; 

Либо
RegExp.Pattern = "^([0-9a-zA-Z.,-]+)\s(.+)\s+([0-9\.,]+)\s*(р|Руб)\.?$";

если у вас в разбираемой строке всегда "Руб" с заглавной.
Самоделкин; +1 Ответить
3. Самоделкин 2 30.01.21 10:06 Сейчас в теме
(2)Блин, точно руб и Руб.
Спасибо!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот