Я хочу получить позиции и длины элементов в списке. Поэтому я хотел бы использовать группировку регулярных выражений, потому что с этим я могу получить смещения и длины соответствующих групп. Элементы разделяются запятыми и могут содержать любые символы. Вот пример:
(1234, A {}, "foo")
Вот что я пытался сделать:
String textToMatch = "( 1234, A{}, \"foo\" )";
Pattern p = Pattern.compile("\\(\\s*([^,]+?)(?:\\s*,\\s*([^,]+?)\\s*)*\\)");
Matcher m = p.matcher(textToMatch);
if (m.find()) {
for (int i = 1; i <= m.groupCount(); i++) {
System.out.println(m.group(i));
}
}
К сожалению, это не работает. Я получаю только первый и последний элемент, но не промежуточные. Вот вывод, который я получаю с кодом, показанным выше:
1234
"foo"
Если я использую одно и то же регулярное выражение три раза вместо оператора звездочки, это работает Я думаю, что я делаю что-то не так с итерациями по группам Есть идеи?