これつぐです。
訂正。
[ruby-list:17035] Re: address field split
> str.scan(/(?:"[^"]*"|[^",;]+)+/)
^
「+」が一つ余分(無意味)です。
と言うわけで、
区切りを「,」だけとすると、
str.scan(/(?:"[^"]*"|[^",])+/)
さらに「\ CHAR」を考慮すると、
str.scan(/(?:"(?:\\"|[^"])*"|\\.|[^",])+/)
おまけに前後の空白を取ると
str.scan(/\s*((?:"(?:\\"|[^"])*"|\\.|[^",])*(?:"(?:\\"|[^"])*"|\\.|[^\s",])+)\s*/).flatten
となります(多分)。
……ちょっとやりすぎました。