xyzzyの正規表現で全角文字だけをヒットさせる

2008年7月1日 20:00

半角文字と全角文字の間に半角スペースを入れる人がいるのだが、そのような半角スペースを一括削除したいという話。


たとえばこんな感じ。

MS-DOS の dir コマンドに相当する Linux のコマンドは ls である。







これを、「MS-DOSのdirコマンドに相当するLinuxのコマンドはlsである。」としたいわけだ。



正規表現で全角/半角文字にマッチする文字クラスがあればよいのだが、xyzzyの正規表現にはない。



しょうがないので、半角文字を[!-~]、全角文字を[^!-~]で代用して次のような関数を作ってみた。

; 全角-半角間のスペース除去



(defun regularize-spacing ()

  (interactive)

  (goto-char (point-min))

  (replace-regexp “\\([^!-~]\\) \\([!-~]\\)” “\\1\\2″ t)

  (goto-char (point-min))

  (replace-regexp “\\([!-~]\\) \\([^!-~]\\)” “\\1\\2″ t)

  (goto-char (point-min))

  (replace-regexp “\\([^!-~]\\) \\([^!-~]\\)” “\\1\\2″ t)

  (goto-char (point-min))) ファイルに書く場合、”"内の\はクォートしなければならないのに一瞬はまったけど、とりあえずこれでそこそこ動く。




アレたまチェッカーの希望

16:28

どの記事をチェックしたのか、マーカーとか付けられると便利なんだけどなぁ。
RSSリーダー使えという話もありますが:-P