Страница 1 из 1

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

Добавлено: 03 сен 2015, 16:31
dikbsd
Никак не получается при использовании файла списка поиска и замен делать замены регулярными выражениями такого вида:

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

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

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

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

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

Добавлено: 03 сен 2015, 16:44
dikbsd
Никак не получается сделать следующую замену с помощью регулярных выражений с использованием списка поиска и замен:

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

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

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

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

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

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

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

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

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

Добавлено: 04 сен 2015, 15:00
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 не умеет делать замену именно с помощью регулярных выражений, а только может искать с их помощью.
Подскажите, в чем дело.
Спасибо.

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

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

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

Добавлено: 06 сен 2015, 09:31
dikbsd
Спасибо за ответ. Я как-то не сообразил сразу, что тема должна пройти модерацию, подумал, что какой-то баг на форуме - и трижды пытался создать одну и ту же тему...
Ваша утилита очень удобна: версия sed доя Windows глючит часто, grep - только ищет.
Если бы вы в развитии своей утилиты вы добавили и замену регулярными выражениями - цены бы ей не было...
Спасибо за планы по этой реализации. Буду ждать...

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

Добавлено: 01 окт 2015, 17:03
nhutils
Замена с использованием регулярного выражения добавлена в версии nhreplace v2.8.0

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

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

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

Добавлено: 20 окт 2015, 19:25
nhutils