From: Kazuhisa YANAGAWA Date: 1998-03-30T14:58:24+09:00 Subject: [ruby-list:7270] Re: 正規表現がおかしい? In message <19980330130130O.dezawa@miya.fujifilm.co.jp> Sinichiro Dezawa writes: > if ( /([\d.]+)\s+([^:]*)\s*([:\s])+(\d+)/ ) ~~~~~~~~ -> ([:\s]+) では? `: ' 一つだ けマッチしても.... > @refs << $2 ~~~~~ -> 初期化していないインスタンス変数への操作.もとはクラス の一部だった? なんにせよ空の配列ででも初期化しないと 「nil はそんなメソッド知らない」と怒られます. > printf "%s%s %s %s %s\n", > $`,$1,$2,$2,$3.gsub(/\s:/,"."),$4 ~~~~~ -> /:\s/ では? 入力を見ると.でな いと最初の `:' が残りますが. という変更を加えると, 目次 1 コマンドリファレンスの見方 1 1.1 対応するプログラムのリビジョン: : : : : : : : : : : : : : : : : : : 1 に対して 目次 1 コマンドリファレンスの見方 1.1 対応するプログラムのリビジョン ................... という結果が得られます....なぜ $4 が出力されない (^^? ちなみに変更後 のプログラムは以下の通り: #!/usr/local/bin/ruby while( gets ) refs = [] if ( /([\d.]+)\s+([^:]*)\s*([:\s]+)(\d+)/ ) refs << $2 printf "%s%s %s %s %s\n", $`,$1,$2,$2,$3.gsub(/:\s/,"."),$4 elsif ( /([\d.]+)\s+([^:]*)\s+(\d+)/ ) printf "%s%s %s %s\n",$`,$1,$2,$2,$3 else print end end =========================================================================== 柳川 @ 情報システム学研究科 . 電気通信大学 katze@yuba.is.uec.ac.jp March 30, 1998 What is done can't be undone.