しばらく前に、@Oleg Pavliv がhttps://unix.stackexchange.com/questions/47615/emacs-simple-arithmetics-in-query-replaceで、emacs で (対話的に) クエリ置換で単純な算術演算を行う方法を説明しました。
小さな elisp プログラムに同じ方法を使用したいのですが、うまくいきません。たとえば、次の elisp コードの最小限の例を考えてみましょう。
(defun Nshift ()
(interactive)
(query-replace-regexp "\\([0-9]+\\)\\.Number" "\\,((+ 3 \\#1)).Number")
)
Nshift
たとえば、文字列を含むバッファーで実行すると4.Number
、次のエラーメッセージが表示されます。
match-substitute-replacement: Invalid use of `\' in replacement text
の正しい elisp 実装はNshift
どのようになりますか?
編集:
ショーンズの回答が、簡単で読みやすい構文でより複雑な置換 (アプリケーションで必要な) に一般化される方法がわからないため、たとえば、次のものと同等の正しい (そして読みやすい) ものは何でしょうか?
(query-replace-regexp "\\([0-9]+\\)\\.Number.\\([0-9]+\\)" "\\,((+ 3 \\#1)).Number.\\,((+ 8 \\#2))")