こんにちは. 今日はバッファ中の数値をそれぞれインクリメントする方法をご紹介したいと思います.
まず query-replace-regexp
を実行します.
そして, 置換対象のパターンに
([0-9]+)
を指定します. (数値にマッチすれば何でも良い)
次に, 置換するパターンに
,(1+ (string-to-number \1))
などと指定します.
ここに出てくる \,(sexp)
が今回のポイント. これは sexp
に書いた任意の S 式の評価結果を置換後の文字列として使用してくれる, とっても強力な構文なんですねー.
もちろん S 式の中では \1
, \2
, などとして正規表現中にグルーピングした部分の文字列を参照することが可能です.
なにこれ便利……!
この構文, 案外知られてないみたいなんですよね. もったいない><
For non-interactive calls of
query-replace-regexp
, we cannot use\,(sexp)
. Use conbination ofre-search-forward
andmatch-string
idiom.