From: matz@... (Yukihiro Matsumoto) Date: 1997-09-01T14:59:07+09:00 Subject: [ruby-list:4014] Re: regexp question まつもと ゆきひろです In message "[ruby-list:4013] regexp question" on 97/09/01, Kikutani Makoto writes: |きくたにです。 | |正規表現がわかりません。 まず$nは開き括弧が出て来た順番でマッチします.ですから /^abc (\w+) (\w+)|^abc (\w+) (\w+) (\w+)/ 1 2 3 4 5 になります.orでつないでも,きくたにさんが想像していらっしゃ る(?)ように /^abc (\w+) (\w+)|^abc (\w+) (\w+) (\w+)/ 1 2 1 2 3 とはなりません. |さて、rubyでは、 | |$_ = "abc def ghi jkl" |if /^abc (\w+) (\w+)|^abc (\w+) (\w+) (\w+)/ | printf("\$1 = %s\n", $1) | printf("\$2 = %s\n", $2) | printf("\$3 = %s\n", $3) |end | |% ruby regmat-test.rb |$1 = |$2 = |$3 = def | |いきなりこっちですか。 ruby の regexp matcherはperlのよりも「より長い方を探す」こと に力をいれているようです.正規表現ルーチンにはあまり手をいれ たくないので,非互換をお許し下さい. まつもと ゆきひろ /:|)