Похоже, здесь будет работать простая итерация
String str = "abc,[1,2,3],xyz,[1,2,3,4]";
ArrayList<String> parts = new ArrayList<String>(); String tmp = "";
for (int i = 0; i < str.length(); ++i) {
if (str.charAt(i) == '[') {
tmp = str.substring(i, str.indexOf("]", i+1) + 1);
i = str.indexOf("]", i+1);
} else if (str.charAt(i) == ',') {
parts.add(tmp);
tmp = "";
} else {
tmp = tmp + str.charAt(i);
}
}
if (!tmp.equals("")) parts.add(tmp);
System.out.println(parts);
Надеюсь, это поможет