emacsで正規表現を使って置換したいみたいな要求はそれなりにあると思いますが、それをやろうとするとemacsの正規表現のバックスラッシュ地獄みたいなものに遭遇することがよくあります。そんな時に使いたいtipsを少しだけ紹介します。
re-builderを使う
emacsにはre-builderというものがあって、書いている正規表現のマッチ状況をリアルタイムにプレビューすることが出来るツールが存在します。M-x re-builderして、いろいろ書いてみると現在のマッチ状況がプレビューされます。
実行中にC-c C-wすればその正規表現をコピーでき、C-c C-qで終了出来ます。emacsにはいろいろな正規表現syntaxがあるので、C-c C-iで切り替えもできます。
詳しくは以下の記事を見るとよいでしょう。
foreign-regexpを使う
re-builderを使ってリアルタイムにプレビュー出来ると言っても、バックスラッシュとか書きまくりたくありません。それよりperlやrubyの正規表現をそのまま使えればもっといいはずです。
それを解決するためにforeign-regexp.elというものがあります。
設定
まずはインストール。
(install-elisp https://raw.github.com/k-talo/foreign-regexp.el/master/foreign-regexp.el)
その後は以下の様な設定をします。僕はperlをよく使うのでperlの正規表現を使います。
(require 'foreign-regexp) (custom-set-variables ;; 正規表現、perlかrubyを選択 '(foreign-regexp/regexp-type 'perl) ;; Choose by your preference. '(reb-re-syntax 'foreign-regexp)) ;; Tell re-builder to use foreign regexp.
最後に
今回はemacsで正規表現を便利に使う方法を紹介してみました。いつもの正規表現がつかえると固有の正規表現を覚える必要がなくて楽ですね。
参考・関連
- Emacsの正規表現編集モード re-builder とややこしいバックスラッシュ問題について。 - こせきの技術日記
- Emacs で正規表現を使うなら re-builder を使おう - higepon blog
- re-builder: the Interactive regexp builder - Mastering Emacs
- http://www.bookshelf.jp/soft/meadow_48.html#SEC705
- http://fukuyama.co/foreign-regexp
- GitHub - k-talo/foreign-regexp.el: Search and replace by foreign regexp. STATUS: *EXPERIMENTAL*