Находит в исходной строке все вхождения регулярного выражения и заменяет их на подстроку замены.
Синтаксис
СтрЗаменитьПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ПодстрокаЗамены>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)Примеры платформы
Текст = "Спрятать символы";
РегулярноеВыражение = "С|с|т";
Результат =
СтрЗаменитьПоРегулярномуВыражению(Текст, РегВыражение, "*");
Номер = "7-123-456-7890";
РегВыражениеНомера = "(\+7)(-)(\d{3})(-)(\d{3})(-)(\d{4})";
ФорматНомера = СтрЗаменитьПоРегулярномуВыражению(Номер,
РегВыражениеНомера, "$0 преобразована в $1 ($3) $5 $7");Полное описание, параметры и ограничения
Глобальный контекст.СтрЗаменитьПоРегулярномуВыражению (Global context.StrReplaceByRegularExpression)
Глобальный контекст (Global context)
СтрЗаменитьПоРегулярномуВыражению (StrReplaceByRegularExpression)
Доступен, начиная с версии 8.3.23.
Синтаксис:
СтрЗаменитьПоРегулярномуВыражению(<Строка>, <РегулярноеВыражение>, <ПодстрокаЗамены>, <ИгнорироватьРегистр>, <МногострочныйПоиск>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Исходная строка.
<РегулярноеВыражение> (обязательный)
Тип: Строка.
Регулярное выражение.
<ПодстрокаЗамены> (обязательный)
Тип: Строка.
Строка, на которую выполняется замена. Может содержать ссылки на группы, описанные в параметре <РегулярноеВыражение>. Для ссылок на группы используется формат $0,$1...$n, где n - количество групп в регулярном выражении.
<ИгнорироватьРегистр> (необязательный)
Тип: Булево.
Истина - без учета регистра, Ложь - с учетом регистра.
Значение по умолчанию: Ложь.
<МногострочныйПоиск> (необязательный)
Тип: Булево.
Истина - выполняется многострочный поиск: символу "^" в шаблоне регулярного выражения соответствует начало каждой строки значения параметра <Строка>, символу "$" - конец каждой строки.
Ложь - символу "^" в шаблоне регулярного выражения соответствует начало значения в параметре <Строка>, символу "$" - конец текста.
Значение по умолчанию: Ложь.
Возвращаемое значение:
Тип: Строка.
Строка, полученная в результате замены.
Описание:
Находит в исходной строке все вхождения регулярного выражения и заменяет их на подстроку замены.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Пример:
// Заменить буквы из указанного набора на звездочку
// из "Спрятать символы" в "*пря*а*ь *имволы"
Текст = "Спрятать символы";
РегулярноеВыражение = "С|с|т";
Результат =
СтрЗаменитьПоРегулярномуВыражению(Текст, РегВыражение, "*");
// Преобразовать формат номера телефона
// из +7-123-456-7890 в +7 (123) 456 7890
Номер = "7-123-456-7890";
РегВыражениеНомера = "(\+7)(-)(\d{3})(-)(\d{3})(-)(\d{4})";
ФорматНомера = СтрЗаменитьПоРегулярномуВыражению(Номер,
РегВыражениеНомера, "$0 преобразована в $1 ($3) $5 $7");
Использование в версии:
Доступен, начиная с версии 8.3.23.
Методическая информация
Практические примеры
Скрыть учебные значения token только в отдельных строках
Используем многострочный режим и ссылку на группу замены, сохраняя имя поля. Рабочие секреты в примере отсутствуют.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Все исходные строки заданы прямо в примере; товары, файлы и настройки рабочих конфигураций не нужны.
Выполняйте на сервере учебной базы. Особенно важно для встроенных функций регулярных выражений.
Все значения вымышленные. Не вставляйте настоящие токены в учебную процедуру или её сообщения.
Текст = "name=Книга" + Символы.ПС + "token=DEMO-ONLY" + Символы.ПС + "TOKEN=TRAINING-VALUE";
Шаблон = "^(token=)[^\r\n]*$";
Очищенный = СтрЗаменитьПоРегулярномуВыражению(Текст, Шаблон, "$1[скрыто]", Истина, Истина);
Сообщить(Очищенный);
Сообщить(СтрЧислоВхождений(Очищенный, "[скрыто]"));Разбор по шагам
Группа (token=) запоминает имя поля; [^\r\n]* берёт только значение до перевода строки.
МногострочныйПоиск=Истина позволяет ^ и $ относиться к каждой строке.
ИгнорироватьРегистр=Истина обрабатывает token и TOKEN одинаково.
$1 в замене возвращает сохранённое имя поля; значение заменяется на [скрыто].
Как проверить результат
name=Книга сохранено; две строки значений заменены на token=[скрыто] и TOKEN=[скрыто].
Количество маркеров [скрыто] равно 2.
Замените последний параметр на Ложь: шаблон начала строки перестанет обрабатывать внутренние строки данного текста.
Ожидаемый результат
Две известные учебные строки отредактированы по точному шаблону без вывода исходных значений.
На что обратить внимание
Это не универсальная защита журналов: секреты могут находиться в JSON, URL, заголовках, других именах полей или многострочных значениях.
Для настоящих журналов предпочтительнее не записывать секретные поля вообще; одна регулярная замена не гарантирует их отсутствие.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.