原です。 > まつもと ゆきひろです. > |原です。 > | > |正規表現が空にマッチする時、最長条件が守られていないように > |見えます。 > > perlも同じ動作をするので仕様ということにしておいてください. そうですね。awk もそうです。 > 最長一致ということは「常に最長の一致を返す」という意味ではな > く,ある一致がより長く延長できる時にはより長く一致させるとい > う意味だとおもいます.たとえば > > "abc" =~ /[a-z]*/ > > が""や"a"でなく"abc"と一致するようなことです.で,複数選択が はい。最長はグローバルに見なくても、最左の方は見るんですよね。 "abc".sub(/b|./) { "(#$&)" } ==> (a)bc とか。 > ある時にはどうしても左側優先になると思います.でないと最後ま > で検索しないと一致しているかどうか判定できなくなりますので, > 一般的には効率が悪くなるでしょうから. 確かに効率は悪くなるでしょうが、そちらの方が正しい(?)のでは ないでしょうか。/.|../ と書くと常に左側の . しかマッチしないわ けですよね。この例だと見て明らかなんですが、複雑なものを書いた 時、たまにハマることがあるんですよね。正規表現が文字列を最後ま で検索しなければならない場合はどうせしばしばあるので、この際、 効率より理屈を取るという手もあるかと思いますが。もっとも perl に合っているのもうれしいけれど。 #今気がついたけど、"abc".gsub(/x?/){"(#$&)"} は #"abc".gsub(/x?/, '(\&)') と書けないのですね。 ---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=-- Shin-ichro Hara(Nagaoka Univ.of Tech.)