Вот мои глобальные процедуры
//Простой возврат Функция RegExp(Знач тСтрока,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина) Экспорт //Возвращает первое вхождение RegExp = Новый COMОбъект("VBScript.RegExp"); тСтрока = Строка(тСтрока); RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске RegExp.Pattern = Паттерн; Matches=RegExp.Execute(Строка(тСтрока)); Если RegExp.Test(тСтрока) тогда Возврат Matches.Item(0).SubMatches.Item(0); КонецЕсли; Возврат Неопределено; КонецФункции //Возврат в массив Функция RegExpМассив(Строка,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина) Экспорт RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске RegExp.Pattern = Паттерн; Matches=RegExp.Execute(Строка); возМассив = Новый Массив; Если RegExp.Test(Строка) тогда Для н=0 по Matches.Count-1 Цикл Для х=0 по Matches.Item(н).SubMatches.Count-1 Цикл возМассив.Добавить(Matches.Item(н).SubMatches.Item(х)); КонецЦикла; КонецЦикла; Возврат возМассив КонецЕсли; Возврат возМассив; КонецФункции //Возврат в таблицу значений Функция RegExpТаблицаЗначений(Строка,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина, КвоКолонок=0) Экспорт RegExp = Новый COMОбъект("VBScript.RegExp"); Тбл = Новый ТаблицаЗначений; Если КвоКолонок=0 тогда КвоКолонок = СтрЧислоВхождений(Паттерн,"("); КонецЕсли; Для х=1 по КвоКолонок Цикл Тбл.Колонки.Добавить("К"+х); КонецЦикла; RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске RegExp.Pattern = Паттерн; Matches=RegExp.Execute(Строка); //возМассив = Новый Массив; Если RegExp.Test(Строка) тогда Для н=0 по Matches.Count-1 Цикл НоваяСтрока = Тбл.Добавить(); Для х=0 по Matches.Item(н).SubMatches.Count-1 Цикл //возМассив.Добавить(Matches.Item(н).SubMatches.Item(х)); НоваяСтрока["К"+(х+1)]=Matches.Item(н).SubMatches.Item(х); КонецЦикла; КонецЦикла; Возврат Тбл КонецЕсли; Возврат Тбл; КонецФункции //Замена Функция RegExpRepalce(Pattern, НачальнаяСтрока,ЗаменяемаяСтрока) Экспорт RegExp = Новый COMОбъект("VBScript.RegExp"); //СтруктураФайлов = Новый СписокЗначений; RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске RegExp.Pattern = Pattern; ВозвращаемаяСтрока = RegExp.Replace(НачальнаяСтрока,ЗаменяемаяСтрока); //Matches=RegExp.Execute(НачальнаяСтрока); //Если RegExp.Test(НачальнаяСтрока) тогда // ВозвращаемаяСтрока = Matches.Item(0).SubMatches.Item(0)+Matches.Item(0).SubMatches.Item(1)+HTMLподпись+Matches.Item(0).SubMatches.Item(2); // Возврат СтрЗаменить(ВозвращаемаяСтрока,"<%br%>",Символы.ПС); //КонецЕсли; Возврат ВозвращаемаяСтрока; КонецФункции //Проверка Функция RegExpTest(Строка,Паттерн, MultiLine = Истина, Global = Истина, IgnoreCase = Истина) Экспорт RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.MultiLine = MultiLine; // истина — текст многострочный, ложь — одна строка RegExp.Global = Global; // истина — поиск по всей строке, ложь — до первого совпадения RegExp.IgnoreCase = IgnoreCase; // истина — игнорировать регистр строки при поиске RegExp.Pattern = Паттерн; //Matches=RegExp.Execute(Строка); Возврат RegExp.Test(Строка); КонецФункции
No comments:
Post a Comment