xyzzyの正規表現で全角文字だけをヒットさせる
半角文字と全角文字の間に半角スペースを入れる人がいるのだが、そのような半角スペースを一括削除したいという話。
たとえばこんな感じ。
これを、「MS-DOSのdirコマンドに相当するLinuxのコマンドはlsである。」としたいわけだ。 正規表現で全角/半角文字にマッチする文字クラスがあればよいのだが、xyzzyの正規表現にはない。 しょうがないので、半角文字を[!-~]、全角文字を[^!-~]で代用して次のような関数を作ってみた。MS-DOS の dir コマンドに相当する Linux のコマンドは ls である。
(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))) ファイルに書く場合、””内の\はクォートしなければならないのに一瞬はまったけど、とりあえずこれでそこそこ動く。; 全角-半角間のスペース除去