Как на Java распарсить строку?

Имеется строка вида: яяяя,ччччч,"цццццц, ццццццццц",ввввввв

Мой код:

String[] array = myList.get(13).split(",");
Arrays.stream(array).forEach(System.out::println);

в результате выдает массив с элементами через все запятые.

Вопрос - как часть строки в кавычках сделать одним элементом


Ответы (1 шт):

Автор решения: Alex Rudenko

Регулярное выражение для split: str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"):

System.out.println("split");
String str = "яяяя,ччччч,\"цццццц, ццццццццц\",,ввввввв";
Arrays.stream(str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"))
      .forEach(System.out::println);

Регулярное выражение для match:

System.out.println("----\nmatch");
Pattern csv = Pattern.compile("\"[^\"]*\"|[^,]+|(?=,)(?<=,)");
csv.matcher(str)
   .results()
   .map(MatchResult::group)
   .forEach(System.out::println);

Результаты:

split
яяяя
ччччч
"цццццц, ццццццццц"

ввввввв
----
match
яяяя
ччччч
"цццццц, ццццццццц"

ввввввв
→ Ссылка