1С 8.2 УП : Использование регулярных выражений (RegExp) в 1С
Регулярные выражения (Regular Expressions) являются известным и мощным средством для поиска, тестирования и замены подстрок. Эта технология доступна и в 1С - через объект VBScript.RegExp. Нужный объект уже встроен в современные версии Windows (начиная с Windows 98), и устанавливать дополнительно ничего не нужно.
Приведенные ниже примеры были протестированы в 1С:Предприятие 7.7; для 1С:Предприятие 8.x изменяется способ создания объекта:
Кроме того, там уже есть логические константы Истина и Ложь - объявлять их не нужно.
Более подробное описание самой технологии RegExp (что означают те или иные значки или скобочки, или какие шаблоны поиска или замены можно использовать в типичных ситуациях) можно найти в специальной литературе (например Бен Форта "Освой самостоятельно регулярные выражения (regexp) за 10 минут") или на сайтах в сети Internet.
Более продвинутый пример разбора HTML использует подвыражения (SubMatches) и позволяет находить как сами теги, так и текст между ними.
Часто регулярные выражения используются для тестирования строк, например пользовательского ввода.
Этот пример позволяет узнать, является ли строка целым числом.
Регулярные выражения поддерживают не только поиск, но и замену текста. При этом найденные подвыражения (в круглых скобках) могут быть представлены в строке замены как $1, $2 и т. д.
(знак доллара используется в VBScript.RegExp; в других средах программирования, например в JavaScript, используемый для этой цели символ может отличаться).
Выбор оптимального алгоритма для разбора строки в массив 0 Столкнулся с проблемой: ПолучитьСтрокуПоНомеру() медленно отрабатывает на входных данных 100 000 строк. Как сделать бытсрее?
// Пример Defender aka LINN
ВремяНачала = ТекущаяДата();
Сообщить(" Обработка начата: " + ВремяНачала);
ТЗ = Новый ТаЗапрос по вхождению искомой строки в наименования элементов справочника 0 В данной статье я расскажу вам как быстро найти в справочнике элементы у которых в наименовании присутствует вхождение искомой нами строки: Текст запроса будет выглядеть так: Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.СсылкаКак мы писали парсер сайта с ценами для 1С 1 Недавно, мой постоянный клиент решил проводить маркетинговые исследования по изменению цен на товары у конкурентов... и эти данные захотел использовать в 1С в связке с его прайс-листом + куча отчетов с графиками и процентным отклонением от цен основКак напечатать документ на определенном принтере из сеанса RDP (Терминал) 5 В 1С есть возможность обратиться к принтеру по имени перед печатью, однако при работе через терминал к названию принтера добавляется (перенаправлено N), где N постоянно меняется. Решение следующее:
НаКлиенте
Функция ИмяПринтераRDP(ИмяПринтера)
SКак проверить наличие русских букв в строке? 0 //рег=СоздатьОбъект(" VBScript.RegExp" ); // Для 7.7
Рег = Новый COMОбъект(" VBScript.RegExp" );
Рег.global=-1;
Рег.ignorecase=-1;
Рег.pattern=" " ;
Сообщить(Рег.test(" есть русские bukovy" ));
Сообщить(Рег.test(" netu russ bukov" )); Посмотреть все результаты поиска похожих
Разбить строку на подстроки 2 Разлогает строку типа:
Поле1, " Сложное, с запятыми внутри Поле2" , Поле3
на массимв подстрок типа:
Поле1
Сложное, с запятыми внутри Поле2
Поле3
RegExp = Новый COMОбъект(" VBScript.RegExp" );
Результат = Новый Массив();
RegExp.IgnoreCase = ЛоУдаление из строки всех лишних символов 2 Есть строка " ABC-9.64,5=s" , нужно оставить в ней только символы " a-z" и " 0-9" , т.е. получить " ABC9645s"
RegExp=Новый COMОбъект(" VBScript.RegExp" );
RegExp.MultiLine=Ложь;
RegExp.Global=Истина;
RegExp.Pattern = " " ;
Str1 = СокрЛПУдаление html тегов из строки 2 RegExp = Новый COMОбъект(" VBScript.RegExp" );
RegExp.IgnoreCase = Ложь; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Ложь; //Многострочный режим
RegExp.Pattern = " * " ; //Ищем тегиУдалить в строке все символы кроме цифр 2 RegExp = CreateObject(" VBScript.RegExp" ); // здесь под восьмерку переделай
RegExp = Новый COMОбъект(" VBScript.RegExp" );
RegExp.IgnoreCase = Истина; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultПроверка на корректность адреса Электронной Почты, e-mail 0 Каким образом можно организовать проверку на корректность адреса электронной почты?
Шаблон = " .+@.+ ..+" ; // регулярное выражение соответствует произвольному e-mail адресу
СтрокаАдреса = " ivanov@mail.com" ; // проверяемый адрес
//CтрокаАдреса =Посмотреть все в категории Регулярные выражения