Emacsの正規表現を使うならre-builder便利

Emacs正規表現はどうも慣れない。re-builderはマッチングをリアルタイムに確認しながら編集できる事を知ったので、さっそく使ってみた。

対象は、以前に書いたhowm上のorgファイルからhowmのタイトル行を取り除く

(defun my-headline-removal (backend)
  (interactive)
  (when (eq backend 'hatena)
  (goto-char (point-min))
  (while (re-search-forward "^=\\( +\\(.*\\)\\|\\)$\\|^\\[[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9][ \t]?\\([0-2][0-9]:[0-5][0-9]\\)?\\]" nil t)
    (goto-char (match-beginning 0))
      (kill-whole-line)
      (goto-char (point-at-bol)))))
(add-hook 'org-export-before-processing-hook 'my-headline-removal)

だと、下のようにファイルリンクがあるとマッチしてくれない箇所がでる。

= テストタイトル
[2015-02-14 22:08] >> ~/test/hoge.txt

これを"M-x re-builder"で正規表現を入力するwindowが表示される。そこに正規表現を入力するとリアルタイムマッチする箇所が反転するので、確かめながら修正が出来る。で、正規表現

"^=\\( +\\(.*\\)\\|\\)\n\\[[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9][ \t]?\\([0-2][0-9]:[0-5][0-9]\\)?\\]\\(.*\\|\\)"

に修正した。もっと整理すべきだと思うけど、動いているのでこのままにしている。