[xyzzy:08790] problem on compiling empty regexp
- Subject: [xyzzy:08790] problem on compiling empty regexp
- From: ABE Hiroshi <hiro-abe@xxxxxxxxxxxxxxxxxx>
- X-mailer: KaMail-0.0.2.5[02/02/24] on xyzzy-0.2.2.233 (whistler)
- X-yzzy-version: 0.2.2.233
あべです。みなさんこんばんは。
compile-regexp に空文字列を与えると nil を返すようです。
具体的には
| (string-match "" "foo")
| => nil
|
| (string-match (compile-regexp "") "foo")
| => 不正なデータ型です: nil: string
|
| (compile-regexp "")
| => nil
と云った様子で compile-regexp した場合としない場合とで挙動が違います。
# やっぱり空の正規表現なんて怪しげなものは使っちゃいけないんでしょうか。
差し当たり .xyzzy で
| (setf (symbol-function '*compile-regexp)
| #'compile-regexp
| (symbol-function 'compile-regexp)
| #'(lambda (regexp &optional (fold-p nil))
| (declare (type string regexp))
| (if (string= regexp "") ""
| (*compile-regexp regexp fold-p))))
として回避しています。setf か psetf かで迷ったのですが取り敢えず動いています。
以上。
-----------------------------------
阿部 洋志 <hiro-abe@xxxxxxxxxxxxxxxxxx>
-----------------------------------