Я был нетерпелив и решил не ждать ответов ... для справки не выглядит так сложно сделать что-то подобное (что работает для моего приложения, мне не нужно беспокоиться об экранированных кавычках, так как материал в кавычках ограничен несколькими ограниченными формами):
final static private Pattern splitSearchPattern = Pattern.compile("[\",]");
private List<String> splitByCommasNotInQuotes(String s) {
if (s == null)
return Collections.emptyList();
List<String> list = new ArrayList<String>();
Matcher m = splitSearchPattern.matcher(s);
int pos = 0;
boolean quoteMode = false;
while (m.find())
{
String sep = m.group();
if ("\"".equals(sep))
{
quoteMode = !quoteMode;
}
else if (!quoteMode && ",".equals(sep))
{
int toPos = m.start();
list.add(s.substring(pos, toPos));
pos = m.end();
}
}
if (pos < s.length())
list.add(s.substring(pos));
return list;
}
(упражнение для читателя: расширение для обработки экранированных кавычек путем поиска обратных косых черт).