原です。

|けいじゅ@日本ラショナルソフトウェアです.

|これだと,
|
|  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 がまずいのかもしれない。これをバグとすれば、
もとのテキストは正しい、、、こっちに一票。(^^;