Данная статья является анонсом новой функциональности.
Не рекомендуется использовать содержание данной статьи для освоения новой функциональности.
Полное описание новой функциональности будет приведено в документации к соответствующей версии.
Полный список изменений в новой версии приводится в файле v8Update.htm.
Планируется в версии 8.3.23
По многочисленным просьбам разработчиков, использующих наши технологии, в версии 8.3.23 мы реализуем поддержку регулярных выражений во встроенном языке.
Будут добавлены новые методы глобального контекста (все функции регистрозависимые):
СтрЗаменитьПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ПодстрокаЗамены>). Находит в указанной строке все вхождения подстрок, соответствующих заданному регулярному выражению, и заменяет их на подстроку замены.
СтрПодобнаПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>). Проверяет указанную строку на соответствие заданному регулярному выражению.
Также будет добавлен новый объект РезультатПоискаПоРегулярномуВыражению, содержащий в себе информацию о результатах поиска регулярного выражения в строке. Метод СтрНайтиПоРегулярномуВыражению возвращает такой объект.
Свойства объекта РезультатПоискаПоРегулярномуВыражению:
НачальнаяПозиция - позиция первого знака найденной подстроки.
Длина - длина найденной подстроки.
Рассмотрим несколько примеров кода.
Вот такой код
Строка = "Красный это #ff0000"; РегулярноеВыражение = "#([a-f0-9]{6})"; РезультатПоиска = СтрНайтиПоРегулярномуВыражению(Строка, РегулярноеВыражение); Если РезультатПоиска.НачальнаяПозиция <> 0 Тогда СтрокаРезультат = СРед(Строка, РезультатПоиска.НачальнаяПозиция, РезультатПоиска.Длина); КонецЕсли; |
вернет СтрокаРезультат равную «#ff0000».
Этот код:
Строка = " Красный это #ff0000"; РегулярноеВыражение = "#([a-f0-9]{6})"; ПодстрокаЗамены = ""; СтрокаРезультат = СтрЗаменитьПоРегулярномуВыражению(Строка, РегулярноеВыражение, ПодстрокаЗамены); |
А этот код (проверка строки на соответствие шаблону телефонного номера)
Строка = "+9(999)999 99-99"; РегулярноеВыражение = "(\+)?([- ()]?\d[- _():=+]?){10,14}"; Результат = СтрПодобнаПоРегулярномуВыражению(Строка, РегулярноеВыражение); |
Невозможно перечислить все задачи, где пригодятся регулярные выражения.
Это и проверка строк на соответствие шаблонам (телефонные номера, электронная почта, номера договоров и т.п.), сложный поиск в тексте документов, парсинг документов XML в ЭДО на соответствие требуемым шаблонам (иногда в счёт-фактуре нужно проверять номер ГТД на соответствие 5-6 шаблонам), парсинг исходных файлов приложения (или массовая замена строк кода по шаблону), парсинг логов (например, технологического журнала), и многое другое.
Уверены, что данная функциональность будет востребованной и поможет упростить решение многих задач.