// Пример Defender aka LINN ВремяНачала = ТекущаяДата(); Сообщить("Обработка начата: " + ВремяНачала); ТЗ = Новый ТаблицаЗначений; Текст = ПолучитьМакет("Макет").ПолучитьТекст(); RE = New COMObject("VBScript.RegExp"); RE.Global = Истина; RE.IgnoreCase = Истина; RE.Multiline = Истина; RE.Pattern = "^.*$"; Строки = RE.Execute(Текст); RE.Pattern = "([^\|]+?|\|)(?=\|)"; ДобавитьКолонки = Истина; Для Каждого СтрокаТекста из Строки Цикл СтрокаДляРазбора = СтрокаТекста.Value; Результат = RE.Execute(СтрокаДляРазбора); Если ДобавитьКолонки Тогда НомерКолонки = 0; Для Каждого Совпадение Из Результат Цикл НомерКолонки = НомерКолонки + 1; ТЗ.Колонки.Добавить("Колонка" + НомерКолонки); КонецЦикла; ДобавитьКолонки = Ложь; КонецЕсли; НоваяСтрока = ТЗ.Добавить(); НомерКолонки = 0; Для Каждого Совпадение Из Результат Цикл Значение = Совпадение.Value; НоваяСтрока[НомерКолонки] = ?(Значение = "|", "", Значение); НомерКолонки = НомерКолонки + 1; КонецЦикла; КонецЦикла; ВремяОкончания = ТекущаяДата(); Сообщить("Обработка завершена: " + ВремяОкончания + ", время обработки: " + Формат('00010101' + (ВремяОкончания-ВремяНачала), "ДФ=мм:сс")); Сообщить("Количество строк: " + ТЗ.Количество());
// Пример aleks-id Функция InitRegExp(Разделитель = "|") RegExp = Новый COMОбъект("VBScript.RegExp"); //Параметры: RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = Ложь; // истина — игнорировать регистр строки при поиске RegExp.Pattern = "[^\" + Разделитель + "]+"; Возврат RegExp; КонецФункции Функция РазложитьСтрокуВМассив(RegExp, Строка) Matches = RegExp.Execute (Строка); Массив = Новый Массив; Для Сч = 0 По Matches.Count - 1 Цикл Массив.Добавить(Matches.Item(Сч).Value); КонецЦикла; Возврат Массив; КонецФункции Процедура КнопкаВыполнитьНажатие(Кнопка) Текст = Новый ЧтениеТекста("C:\aktivy.txt", КодировкаТекста.ANSI); RegExp = InitRegExp(); Стр = Текст.ПрочитатьСтроку(); Пока Стр <> Неопределено Цикл масс = РазложитьСтрокуВМассив(RegExp, Стр); Стр = Текст.ПрочитатьСтроку(); КонецЦикла; RegExp = Неопределено; КонецПроцедуры