2009-03-24 23 views
44

Emacs:大文字と小文字を区別するための正規表現

<BarFoo> 

<barfoo> 

つまり、大カッコ内のすべてのものをその小文字に置き換えます。

誰でもこれを行うLispのすてきなスニペットがありますか? ASCII値だけを扱っていると仮定するのは安全です。ボーナスは、完全な正規表現を取るのに十分な汎用性があり、山括弧の例を処理するだけではありません。 M-x query-replace-regexpだけを使用する答えにさらに多くのボーナスポイントがあります。

ありがとう、

Dom

答えて

64

検索文字列として"<\([^>]+\)>"や交換など"<\,(downcase \1)>"M-x query-replace-regexpを試してみてください。

これは、Emacs 22以降で動作するはずです。置換文字列でのLisp式の使用方法の詳細については、Steve Yegge blog postを参照してください。 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)))) 
+6

クールです!私はEmacsの正規表現で\、()を認識していませんでした。 – emk

+1

これにより、 "置換テキストに' \ 'の無効な使用 " –

+1

Regexpは" <\\([^>] + \\)> "になり、検索文字列がすべて大文字でタグと一致する場合、置換は期待通りに機能しません。 –

関連する問題