From: Tanaka Akira Date: 2003-05-19T16:21:54+09:00 Subject: [ruby-dev:20214] Re: /()*\1/ =~ "" In article <5FD2F0CF7F5D7F44B00F36870B9E78B508DE5022@SBG-EX4>, kkosako@softbank.co.jp writes: > 説明が不正確でした。 > 繰り返しを終了するのではなくて、繰り返しを中断して、 > 繰り返しの後の部分に処理が移動します。 > そこで失敗するとバックトラックして、もしも繰り返しの中に他の選択肢が残ってい > れば > それを実行します。 > > 上記の例だと、 > () => 繰り返し中断 => 失敗 => (b) => () => 繰り返し中断 => 成功 > となります。 なるほど。 とすると、空文字列を含んでいる場合の greedy さが非直観的になるのか、な? % ./ruby -rpp -e 'pp /(?:a|()|b)*/.match("abababab")' # とか。 -- [田中 哲][たなか あきら][Tanaka Akira]