В этой статье я покажу пример замены текста с использованием параметра -ft/-formattedtext, добавленного в nhreplace v2.8.0. Пример основан на запросе пользователя программы, после которого эта функция была добавлена в программу.

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

В запросе требовалось, чтобы программа с помощью одной команды находила в файле вхождения:

<lang>RU-ru</lang>

или

<lang>Rus</lang>

и заменяла их на:

<lang>Ru</lang>

Используя регулярные выражения, можно получить этот результат следующим образом:

  • разбить выражение на несколько частей – capture group, каждая из которых заключается в круглые скобки, например: (<lang>)(RU-ru|Rus)(</lang>);
  • сформировать заменяющий текст из 1-й и 3-й групп, вставив между ними простой текст Ru.

Команда будет выглядеть так ($1 и $3 означают первую и третью группы):

-sre:"(<lang>)(RU-ru|Rus)(</lang>)" -ft:"$1ru$3"

Групп для поиска может быть и больше, например, чтобы исключить лишние пробелы:

-sre:"(<lang>)(\s*)(RU-ru|Rus)(\s*)(</lang>)"

При формировании заменяющего текста только из групп 1 и 5 пробелы не будут включены в заменяющий текст:

-ft:"$1ru$5"
Замена текста регулярным выражением – пример nhreplace
Метки:     

3 мыслей о “Замена текста регулярным выражением – пример nhreplace

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *