[mew-dist 21462] Re: regex in mew-summary-cook-region
Shun-ichi TAHARA ( 田原 俊一 )
jado at example.com
2002年 8月 19日 (月) 13:33:32 JST
From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Message-Id: <20020819.131859.125113385.kazu at example.com>
> > mew-summary-cook-region で、マークの付いた行を探すのに、
> >
> > (setq regex (concat mew-regex-msg "\\([^ ]\\)"))
> >
> > として、この regex で re-search-forward をかけていますが、この regex
> > は (num が 2桁以上であれば)マークのない行にも引っかかってしまいます。
>
> 本当ですか?
>
> 上記 regex: "^ *\\([0-9]+\\)\\([^ ]\\)"
> mew-regex-msg-mark: "^ *\\([0-9]+\\)\\([^ 0-9]\\)"
>
> となっており、後半で 0-9 を否定していないことが気になっているのでしょ
> うけれど、前半の [0-9]+ は「欲張り」の法則に従うので、メールの番号全体
> にマッチします。
問題は、番号の後に空白がある場合(つまりマークのない行)ですが、前半のパ
ターンでは、番号の直後が空白で [^ ] にマッチしないのですが、数字は [^ ]
にマッチするので、バックトラックが起こって、
123 ....
^^~
↑↑
[0-9]+[^ ]
みたいなマッチの仕方をしてくれるようです。
実際には、マーク名 " " でマークを打とうとして失敗するので実害はないか
もしれないですが、3.0.62 までの highlight-summary がこれを踏んで、さん
ざん空のoverlayをかぶせてしまってました(もっとも、この問題はすでに解消
していますが)。
_______________________________
田原 俊一 jado at example.com, shunichi_tahara at example.com
http://flowernet.gr.jp/jado/
FingerPrint: 16 9E 70 3B 05 86 5D 08 B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Mew-dist メーリングリストの案内