web-dev-qa-db-ja.com

Emacs:大文字と小文字を変更するための正規表現の置き換え

時々、次のような値のすべてのインスタンスを置き換えたいと思います。

<BarFoo>

<barfoo>

つまり、山かっこ内のすべてのものを同等の小文字に正規表現で置き換えます。

誰かがこれを行うLISPの素敵なスニペットを手に入れましたか? ASCIIの値だけを扱っていると考えるのは安全です。完全な正規表現をとるのに十分な汎用性があり、山括弧の例だけを処理するのではないものにはボーナスポイントがあります。 M-x query-replace-regexpを使用するだけの回答へのボーナスポイントが増えます。

ありがとう、

ドム

48
Dominic Rodger

検索文字列として"<\([^>]+\)>"を、置換として"<\,(downcase \1)>"を使用してM-x query-replace-regexpを試してください。

これはEmacs22以降で機能するはずです。置換文字列でLISP式を使用する方法の詳細については、これを参照してください Steve Yeggeブログ投稿

以前のバージョンのEmacsでは、次のようなものを試すことができます。

(defun tags-to-lower-case ()
  (interactive)
  (save-excursion
    (goto-char (point-min))
    (while (re-search-forward "<[^>]+>" nil t)
      (replace-match (downcase (match-string 0)) t))))
76
Luke Girvin