題意に沿わず、長く、そして美しくない

str = 'first,second"a,b,c"second,third'

require 'strscan'
COMMA = /\A,\Z/
QUOTE = /".*?"/
SCAN_REG = /#{QUOTE}|./
def parse(str)
result = [""]
scanner = StringScanner.new(str)
while match = scanner.scan(SCAN_REG)
case match
when COMMA; result << ""
else ; result.last << match
end
end
result
end

p parse(str) #=> ["first", "second\"a,b,c\"second", "third"]