1С 7.x : Использование регулярных выражений (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 //рег=СоздатьОбъект(" VBScript.RegExp" ); // Для 7.7
Рег = Новый COMОбъект(" VBScript.RegExp" );
Рег.global=-1;
Рег.ignorecase=-1;
Рег.pattern=" " ;
Сообщить(Рег.test(" есть русские bukovy" ));
Сообщить(Рег.test(" netu russ bukov" )); Краткий справочник по регулярным выражениям 0 Регулярные выражения - это то, что все время забывается из-за не слишком частого использования.
Управляющие символы (., ?, *, +, {}, , |, $, ^):
. Заменяет один произвольный символ a.c aac, abc ...
^ Отрицание Все кроме цифр. (Ставится внПоиск строки в текстовом файле по маске 0 Есть ли возможность поиска строки в текстовом файле по маске? К примеру ХХХХ-ХХХХ-ХХХХ-ХХХХ.
RegExp = Новый COMОбъект(" VBScript.RegExp" );
RegExp.IgnoreCase = Ложь; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
ReПолучения новостей с RSS-канала сайта buh.ru 0 Код для получения новостей с сайта buh.ru, используется RSS-канал http://www.buh.ru/rss/rss-2.0.jsp
Данный код для 7.7, при использовании в 8-ой версии нужно заменить СоздатьОбъект( на Новый COMОбъект(, остальное вроде так же.
Функция ВытащитьДату(Посмотреть все результаты поиска похожих
Разбить строку на подстроки 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трокаАдреса =Посмотреть все в категории Регулярные выражения