stat x, y, z,

x/y/z являются числами. Есть ли какая-либо команда regex в notepad++, которая позволяет мне заменить весь текст в файле, который соответствует шаблону (stat x, y, z, (имейте в виду, что числа, которые представляют x/y/z, изменяются)) способом что это уменьшает x на 2, y и z на 1?

1 ответ1

0

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

Regex для захвата чисел:

^stat ?([0-9]+), ?([0-9]+), ? ([0-9]+)$

Объяснение регулярного выражения:

  • ^ начало строки
  • "stat" строковый литерал
  • ? дополнительное пространство
  • ([0-9]+) жадное совпадение любой числовой последовательности, 1 или более символов.
  • , запятая буквальная
  • ? дополнительное пространство
  • ([0-9]+) жадное совпадение любой числовой последовательности, 1 или более символов.
  • , запятая буквальная
  • ? дополнительное пространство
  • ([0-9]+) жадное совпадение любой числовой последовательности, 1 или более символов.
  • $ Конец строки

Вы можете добавить это в поле поиска, помечая для поиска как регулярное выражение. Затем в поле "Заменить" вы можете удалить следующее выражение:

@set /a sa=\1-2\n@set /a sb=\2-1\n@set /a sc=\2-1\necho stat %sa%, %sb%, %sc%\n

Затем вы можете нажать «заменить все» и сохранить новый сгенерированный текст в командный файл и запустить его, который распечатает ваши измененные значения. Это не займет у вас 100% пути к полностью автоматизированному механизму. Вам потребуется дополнительная переменная, к которой вы добавляете каждую новую строку, а затем распечатываете ее только один раз, чтобы получить чистый вывод, который вы можете направить в файл. Но это дает вам 99% пути туда.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .