From: Koretsugu Daigoro Date: 1999-11-03T01:04:59+09:00 Subject: [ruby-list:18311] Re: [book] csv_split2 これつぐです。 [ruby-list:18291] Re: [book] csv_split2 > けいじゅ@日本ラショナルソフトウェアです. > $の問題はないようですが, 何かバグがあるみたいです. > > csv_split(',"z","b",b,') > => ["", "b", "b", ""] むむむむむ……。 今まで使えていたということは、 最初が空のデータを扱ったことがなかったのか……。 しかしですね、 #!/usr/local/bin/perl $source = ',"z","b",b,'; @csv = (); push(@csv, $+) while $source =~ m/(?:^|,)(?:"((?:[^"]|"")*)"|([^,]*))/g; print(join(":", @csv)); :z:b:b: となるのです。 正規表現は Perl 互換だと思っていいのですよね? だとしたら Ruby の正規表現のバグかしら? (これだけのために Perl をインストールしてしまった……) > それにこのプログラムは元と違いすぎて採用しづらいなぁ... > > # 説明部分を大幅に変更する必要が出てしまいますので(^^;;; すみません。 そこまで意識してませんでした。 単に手元に似たようなのがあったので出してみただけなのです。 ちなみにオリジナルはこれです。 str.scan(/(?:^|,)("(?:[^"]|"")*"|[^,]*)/).flatten