読者です 読者をやめる 読者になる 読者になる

Emacs Lispで正規表現の validation

emacs regexp

anzu.elを作成する際, 入力途中の正規表現が不正というか
未完成である場合の判定を行う必要があったので, それについてのメモを残して置きます

対応

不正な正規表現正規表現を受け取るような各種検索関数に与えると,
"invalid-regexp"という例外が飛んでくるので, それを catchした場合は
不正として扱えばよい.


具体的には以下のコードになります.

(defun validate-regexp (regexp)
  (condition-case err
      (progn
        (string-match-p regexp "")
        t)
    (invalid-regexp nil)))
結果

以下のようになります.

(validate-regexp "\\")     ;; nil
(validate-regexp "\\s-+")  ;; t