原です。 |けいじゅ@日本ラショナルソフトウェアです. |これだと, | | foo,"bar",baz, | |のように 最期に``,''で終わるとき問題ありです. あ、そうか。 | source.scan(/(([^"#{qd}][^#{qd}]*|)|"(([^"]|"")*)")(#{qd}|$)/) do | |これがいいかなと思いますが, いかがでしょう? これも前とあまり変わらないですね。こんなのかなあ、 def csv_split(source, delimiter = ',') csv = [] qd = Regexp.quote(delimiter) source.scan(/(([^"#{qd}][^#{qd}]*|)|"(([^"]|"")*)")(#{qd}|($))/) do |match, m1, m2, *rests| if m2 csv.push m2.gsub(/""/, '"') else csv.push m1 end break if rests[-1] end csv end あれ、そもそも、 "a".scan(/(a|)$/) do |x| p x #=> ["a"], [""] end となる scan がまずいのかもしれない。これをバグとすれば、 もとのテキストは正しい、、、こっちに一票。(^^;