[#20227] dyna_vars problem? — Tanaka Akira <akr@...17n.org>

しばらく前から、稀に Ruby が core を吐くという問題を追いかけているので

15 messages 2003/05/19
[#20234] Re: dyna_vars problem? — matz@... (Yukihiro Matsumoto) 2003/05/19

まつもと ゆきひろです

[#20236] Re: dyna_vars problem? — Tanaka Akira <akr@...17n.org> 2003/05/19

In article <1053363181.529491.30320.nullmailer@picachu.netlab.jp>,

[ruby-dev:20215] Re: /()*\1/ =~ ""

From: kkosako@...
Date: 2003-05-19 07:41:23 UTC
List: ruby-dev #20215
> -----Original Message-----
> From: Tanaka Akira [mailto:akr@m17n.org]
> ...
> 最初、私は 2回以上マッチしても意味がないんじゃないかなぁと思って、まず
> 1回を試して次に 0回を試せばいいんじゃないかと思ったんですが、考えてみ
> るとこれでもうまくいかないケースがあります。
> 
> たとえば、
>   /(?:()|()|()|()|()|())*\2\5/ =~ ""
> というのを考えると、これは 2回(以上)マッチしてどこかで 2つめと 5つめを
> (順不同で)通るようなのを見つけないといけません。
> 
> # これは鬼車でもマッチしません、が、perl 5.6.1 はマッチします。
> 
> さらに、/(?:()|()|()|(x)|()|())*\2b\5/ =~ "x" なんてのも考えられて、こ
> れは 3回(以上)マッチして、2つめ、4つめ、5つめを通らないといけません。

こういう場合があるんですね。考えていませんでした。
選択肢の数だけの繰り返しは、必ず試すように変更すれば良いような気がしますが、
それだけでどのようなパターンにも対応できるのか、わかりません。
誰か教えてください。

対処方法があっても、速度的な不利が大きすぎる場合は
放置するかもしれませんが。
--
小迫@出向中

In This Thread

Prev Next