Emacs: поиск и замена операций - PullRequest
0 голосов
/ 07 декабря 2018

Я ищу способ поиска и замены регулярного выражения в Emacs, а также выполняю операции.Я не знаю, как это объяснить, но вот пример:

Допустим, у меня есть этот код для 200+ строк:

"lq.u $r40r41 = 0[$r39]\n"
"addd $r14r15 = $r14$r15, $r40$r41\n"
";;\n"              
"lq.u $r42r43 = 16[$r39]\n"             
"addd $r16r17 = $r16$r17, $r42$r43\n"
";;\n"    

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

"load $r39r40 = 0[$r39]\n"
"add $r13r14 = $r13$r14, $r39$r40\n"
";;\n"              
"load $r41r42 = 16[$r39]\n"             
"addd $r15r16 = $r15$r16, $r41$r42\n"
";;\n"  

Итак, в общем, мне бы хотелось, чтобы был способ регулярного поиска двухзначных чисел «XX» и замены их на «XX-1».».Есть ли способ сделать это через Emacs или еще?

Мне удалось сэкономить время на ручном редактировании с использованием листов Excel, но мне нужен более эффективный и менее глупый способ сделать это.

1 Ответ

0 голосов
/ 07 декабря 2018

Я не могу сказать, должен ли всегда быть $ перед r, поэтому либо:

Mx query-replace-regexp RET \$r\([0-9]+\) RET $r\,(1- \#1) RET

или:

Mx query-replace-regexp RET r\([0-9]+\) RET r\,(1- \#1) RET

Где:

  • \, вычисляет выражение lisp в замене и, следовательно,:
  • \,(1- ...) - это вызов функции 1- с аргументом:
  • \#1, который в этом замещающем синтаксисе представляет группу 1 совпадения в виде числа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...