Пример работы с регулярными выражениями
0Полезные технологии
19.11.2008
o.nikolaev.infostart
Описание
//******************************************************************************
// ПолучитьНомераДоговоров()
//
// Параметры:
// пСтрСтрокаСНомерами (строка) - строка с номерами договоров
//
// Возвращаемое значение:
// Строка с номерами договоров разделенных запятыми.
//
// Описание:
// Разбирает строку, выбирает из нее номера договоров.
//
Функция ПолучитьНомераДоговоров(пСтрСтрокаСНомерами)
Попытка
РегВыражения = СоздатьОбъект("VbScript.RegExp");
Исключение
Возврат("");
КонецПопытки;
РегВыражения.Global = 1;
РегВыражения.IgnoreCase = 1;
// Получить номера договоров по ОСАГО
// ... предварительно подготовить строку с номерами
пСтрСтрокаСНомерами = СтрЗаменить(пСтрСтрокаСНомерами," ","");
пСтрСтрокаСНомерами = СтрЗаменить(пСтрСтрокаСНомерами,"N","");
пСтрСтрокаСНомерами = СтрЗаменить(пСтрСтрокаСНомерами,"-","");
РегВыражения.IgnoreCase = 0;
РегВыражения.Pattern = "[A|А][0-9]";
СписокВхождений = РегВыражения.Execute(пСтрСтрокаСНомерами);
пСтрНомераДоговоров = "";
пСтрНомерДоговора = "";
Для А = 1 По СписокВхождений.Count Цикл
пСтрНомерДоговора = СокрЛП(СписокВхождений.Item(А).Value);
// ... на всякий случай замена, если были латинские символы
пСтрНомерДоговора = "AAA" + Сред(пСтрНомерДоговора, 4);
пСтрНомераДоговоров = пСтрНомераДоговоров + пСтрНомерДоговора + ",";
КонецЦикла;
// ...убрать последнюю запятую
пСтрНомераДоговоров = Лев(пСтрНомераДоговоров,СтрДлина(пСтрНомераДоговоров) - 1);
Возврат(пСтрНомераДоговоров);
КонецФункции // ПолучитьНомераДоговоров()
Оценка сообщества
Добавить плюс Добавить минус
Комментарии (3)
2.
3.
olegn
19.11.2008 12:11:31
(1) Этого примера я не видел. Написал про то что делал сам. Скоро выложу еще один пример на тему разбора текстовых строк. Там используется конечный автомат.
(2) Обычно шла строка вида "ААА 04597654, ААА 1234567" и т.д. Причем символы А могли быть и русскими и латинскими. Могли указываться больше 3-ех символов "А", или наоборот меньше. С проблеами, без пробелов с символами "№" или "N" в разных местах. Насколько я помню это регулярное выражение после небольшой чистки строки обрабатывало все такие случаи.
Для добавления комментария необходимо зарегистрироваться.



http://www.kb.mista.ru/article.php?id=698