Divida a string por vírgulas, ignorando os sinais de pontuação (incluindo ',') entre aspas

Como posso dividir uma string (de uma caixa de texto) por vírgulasexcluindo entre aspas duplas (sem se livrar das aspas), juntamente com outros possíveis sinais de pontuação (por exemplo, '.' ';' '-')?

Por exemplo. Se alguém inseriu o seguinte na caixa de texto:

apple, orange, "baboons, cows", rainbow, "unicorns, gummy bears"

Como posso dividir a string acima no seguinte (digamos, em uma lista)?

apple

orange

"baboons, cows"

rainbow

"Unicorns, gummy bears..."

Obrigado pela ajuda!