Replace


Назначение

Заменяет подстроку другой подстрокой глобально (все вхождения) по тексту.

Ключи

source Исходный текст. Многострочный текст нужно заключать в кавычки, крайние кавычки игнорируются.
left Искомая строка.
right Строка, на которую заменяется искомая строка.
regex Логическое значение, если yes|true|on|1, то left и right будут интепретироваться как регулярные выражения в контексте Perl, то есть будет выполнена команда s/left_regex/right_regex/gs.

Работает только в 4.43+.

regex_modificator Строка, содержит модификатор для регулярного выражения. Если он не задан, по умолчанию он будет равен gs. Нотация Perl.

Комментарии

Применяется редко, в основном для операций с javascript.

Для замены переносов строк, табуляций и других непечатных символов необходимо, чтобы они появились в тексте ключей макроса.

Режим регулярных выражений

Если ключ regex включен, то в ключах left и right можно задавать регулярное выражение. Регулярные выражения системой выполняются в нотации языка Perl, в качестве разделителя используется прямой слэш, поэтому там где он употребляется в качестве обычного символа его нужно предварять обратным слэшем, как и специальные символы (см. документацию по s/// языка Perl).

Например, в Perl мы бы написали так:

$string =~ s/<\/?(b|br|p|h\d|script|strong)[^>]*>//gsi;

Квотирующий обратный слэш мы выделили жирным.

А в макросе Replace то же самое будет выглядеть так:

$Replace[source: "<P><STRONG>Некий</STRONG> текст</P> "; left: "<\/?(b|br|p|h\d|script|strong)[^>]*>"; right: ""; regex: on; regex_modificator: gsi]$

Никто, кстати, не запрещает нам использовать в правой части функции Perl при использовании модификатора e.

Просьба. Поскольку регулярные выражения одна из самых сложнопонимаемых вообще в программировании вещей, если вы не понимаете что это такое - лучше не пробуйте, или мучайтесь сами. Не просите службу поддержки писать регексы для ваших задач и искать ошибки в них, это сложная и дорогая работа. Макрос на 100% протестирован и корректен. Если у вас что-то не работает - значит вы ошиблись в регулярном выражении.

Примеры

Пример №1
$Replace [source: "qweqwe"; left: "qwe"; right: "йцу
кен"]$

Результатом работы будет строка
"йцу
кенйцу
кен".

Пример №2
$Replace [source: "qweqwe qweqweqwe"; left: "(qwe)+"; right: "qwe"; regex: on]$

Результатом работы будет строка
"qwe qwe".