まつもと ゆきひろです

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のよりも「より長い方を探す」こと
に力をいれているようです.正規表現ルーチンにはあまり手をいれ
たくないので,非互換をお許し下さい.

                                まつもと ゆきひろ /:|)