String input = "[id1:1c56c60:10ba45927f6:-7fff][id2:1c56c60:10ba45927f6:-7ffe][id3:1c56c60:10ba45927f6:-7ffd][id4:1c56c60:10b]";
String[] split = input.split("\\]\\[");
for (int x = 0; x < split.length; x++) {
String s = split[x].trim();
if (s.startsWith("[")) {
s = s.substring(1, s.length());
}
if (s.endsWith("]")) {
s = s.substring(0, (s.length() - 1));
}
java.util.regex.Matcher m = java.util.regex.Pattern.compile("^id\\w\\

.+)$").matcher(s);
boolean matches = m.matches();
if (matches) {
s = m.group(1);
}
split[x] = s;
}
//at this point you have String[] containing everything you want.
for (int x = 0; x < split.length; x++) {
System.out.println(split[x]);
}
Not pretty but works, had some issues trying to match \\[id\\w\\

.+)\\]?+ but my regex skills in
Java aren't that strong.