これつぐです。


訂正。

[ruby-list:17035] Re: address field split
> str.scan(/(?:"[^"]*"|[^",;]+)+/)
                             ^
「+」が一つ余分(無意味)です。
と言うわけで、
区切りを「,」だけとすると、

str.scan(/(?:"[^"]*"|[^",])+/)

さらに「\ CHAR」を考慮すると、

str.scan(/(?:"(?:\\"|[^"])*"|\\.|[^",])+/)

おまけに前後の空白を取ると

str.scan(/\s*((?:"(?:\\"|[^"])*"|\\.|[^",])*(?:"(?:\\"|[^"])*"|\\.|[^\s",])+)\s*/).flatten

となります(多分)。
……ちょっとやりすぎました。