[xyzzy:03142] xyzzy 正規表現エンジンと POSIX (was Re: バージョンアップのお知らせ)
- Subject: [xyzzy:03142] xyzzy 正規表現エンジンと POSIX (was Re: バージョンアップのお知らせ)
- From: HANAI Tohru <hanai@xxxxxxxxxxxxxxxxxxxx>
- X-mailer: Mozilla 4.6 [en] (Win95; I)
亀井さん、こんにちは。
花井です。
> | メッセージ楽しみにしてたのにぃ。ヾ(-_-;)ぉぃぉぃ
>
> どうしても見たければ実行ファイルを「正
> 規表現」でサーチすれば見えますけど(^^;
やってみましたが敗北しました。無念。(;_;)
grep-dialog で "\(.*\)*X" を xyzzy.exe に掛けると一向に返っ
てこないので、記憶領域を乱費する正規表現ではないのでしょう。
表現から領域消費量を想像できないという知識不足が敗因でしょ
うか。(^^;
> | ところで、xyzzy の正規表現のマッチング仕様は POSIX
> | 非互換という認識であってますでしょうか?
>
> なるべく「らしく」なるように組んだつもりですが、実際の
> ところどうなんでしょう? たとえば、どんなパターンのとき
> でしょうか?
またも「詳説 正規表現」からですけど、
(1) 文字列 : oneselfsufficient
正規表現 : one\\(self\\)?\\(selfsufficient\\)?
(1)'正規表現 : one\\(self\\|selfsufficient\\)?
(2) 文字列 : topological
正規表現 : \\(to\\|top\\)\\(o\\|polo\\)?\\(gical\\|o?logical\\)
(1) (1)' は、共に POSIX と同じ結果になります。
ですが (2) では POSIX と異なり、それぞれの括弧には
1: to
2: polo
3: gical
が入ります。 (0.0.0.96 でも同様です。)
POSIX の最長最左マッチであれば、複数あるマッチパターンの
のなかから、
1. \\(to\\|top\\) は、top の方が長いから、こっちを採用
2. \\(o\\|polo\\)? は、既に p を取られたので o を採用
3. \\(gical\\|o?logical\\) は、残りの logical を採用
していくらしいです。
いまの動作でも、「詳説〜」でいう DFA エンジンであれば
これでいいのではないかというのが、目下第5章を読んでる
最中の私の考えなのですが、どうなのでしょう?
POSIX 準拠を目指すと、遅くなりそうな気がしますし...
P.S.1
私が動作仕様をこまごま調べるのは、これを一旦把握しちゃ
えば後が楽になるっていう経験則からなんですが、よく自分
でも呆れます。(^^;
P.S.2
個人的には、「最長最左」より「最左最長」と言った方が
意味的にしっくりときますが、これまでの私にはどっちも
馴染みがないので、「詳説〜」に合わせてます。
# 読み違いでなければですが。
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
@客先 (hanai@xxxxxxxxxxxxxxxxxxxx)
@自宅 (honey@xxxxxxxxx)
花井 達
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-