Замена с использованием регулярных выражений

Обсуждение программы nhrt - замена текста в файлах (прежнее название nhrplc)
Закрыто
dikbsd
Сообщения: 5
Зарегистрирован: 03 сен 2015, 16:14

-list:actions.txt : Регулярные выражения в замене

Сообщение dikbsd »

Никак не получается при использовании файла списка поиска и замен делать замены регулярными выражениями такого вида:

Код: Выделить всё

-sre:"(<lang>)(\s*)(RU-ru|Rus)(\s*)(</lang>)" -t:"\1ru\5"
результат получается таким: Если замену сделать такой:

Код: Выделить всё

-t:"$1ru$5"
то результат будет таким: По-видимому, утилита не умеет работать с заменой найденного регулярными выражениями? Есть только поиск с использованием регулярных выражений, а замена - просто текстом?
Или я неверно что-то делаю? Может, вместо нужно использовать другой параметр?
dikbsd
Сообщения: 5
Зарегистрирован: 03 сен 2015, 16:14

Замена с использованием регулярных выражений

Сообщение dikbsd »

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

Код: Выделить всё

-sre:"(<lang>)(\s*)(RU-ru|Rus)(\s*)(</lang>)" -t:"\1ru\5"
Вместо

Код: Выделить всё

<lang>RU-ru</lang>
получается следующее: Если вместо

Код: Выделить всё

-t:"\1ru\5"
подставить

Код: Выделить всё

-t:"$1ru$5"
, то получает следующее: Такое впечатление, что утилита не умеет делать замены найденного с помощью регулярных выражений.
Или я что-то не то делаю. Может, вместо надо для замен использовать иной параметр?
dikbsd
Сообщения: 5
Зарегистрирован: 03 сен 2015, 16:14

-list и замена текста

Сообщение dikbsd »

Уже 3-й раз создаю эту тему - надеюсь, что теперь она появится в списке тем...
Суть проблемы такова: есть файл actions.txt, в котором находится список регулярных выражений для поиска / замен в файлах.
Например:

Код: Выделить всё

-sre:"(<lang>)(\s*)(RU-ru|Rus)(\s*)(</lang>)" -i -t:"\1ru\5"
После выполнения команды:

Код: Выделить всё

nhrplc.exe -list:actions.txt -notitle -i -r -o:d *.txt
в файлах вместо ожидаемого

Код: Выделить всё

 <lang>ru</lang>
появляется Замена подстановки на не помогает - результат Или я что-то не то делаю, возможно вместо ключа -t надо использовать что-то еще. Или - утилита nhrplc.exe не умеет делать замену именно с помощью регулярных выражений, а только может искать с их помощью.
Подскажите, в чем дело.
Спасибо.
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Замена с использованием регулярных выражений

Сообщение nhutils »

Здравствуйте, прошу извинить за задержку с премодерацией вашей темы.
Вы правы, на данный момент "утилита nhrplc.exe не умеет делать замену именно с помощью регулярных выражений, а только может искать с их помощью." Соответственно, -t задает фиксированный текст, подставляемый вместо найденного регулярного выражения.
Добавляем функцию замены с помощью регулярных выражений в план будущих версий.
dikbsd
Сообщения: 5
Зарегистрирован: 03 сен 2015, 16:14

Re: Замена с использованием регулярных выражений

Сообщение dikbsd »

Спасибо за ответ. Я как-то не сообразил сразу, что тема должна пройти модерацию, подумал, что какой-то баг на форуме - и трижды пытался создать одну и ту же тему...
Ваша утилита очень удобна: версия sed доя Windows глючит часто, grep - только ищет.
Если бы вы в развитии своей утилиты вы добавили и замену регулярными выражениями - цены бы ей не было...
Спасибо за планы по этой реализации. Буду ждать...
nhutils
Сообщения: 595
Зарегистрирован: 09 дек 2009, 18:08
Контактная информация:

Re: Замена с использованием регулярных выражений

Сообщение nhutils »

Замена с использованием регулярного выражения добавлена в версии nhreplace v2.8.0
dikbsd
Сообщения: 5
Зарегистрирован: 03 сен 2015, 16:14

Re: Замена с использованием регулярных выражений

Сообщение dikbsd »

Спасибо!
Скажите, а утилита не поддерживает группировки вида (?!), (?<=), (?=), (?!) и им подобные?
Нет ли у вас описания, какие возможности регулярных выражений поддерживает утилита?
Закрыто