まつもと ゆきひろです
In message "[ruby-list:4013] regexp question"
on 97/09/01, Kikutani Makoto <kikutani / jdc.ericsson.se> 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のよりも「より長い方を探す」こと
に力をいれているようです.正規表現ルーチンにはあまり手をいれ
たくないので,非互換をお許し下さい.
まつもと ゆきひろ /:|)