import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class RegexTest {
public static void main
(String[] args
){ String msg
= "id1:[label1:label2]:id2:[label1:label2:label3]:id3:[label1:label2:label3:label4]"; Pattern pattern = Pattern.compile("id");
Matcher m = pattern.matcher(msg);
int prev = -1;
int next = -1;
int start = -1;
int end = -1;
while (m.find()){
if(prev == -1){
prev = m.end();
}
else
{
next = m.end();
start = prev;
end = next;
subMsg = msg.substring(start,end);
kv.
put(String.
valueOf(subMsg.
charAt(0)),subMsg.
substring(subMsg.
indexOf("["),subMsg.
lastIndexOf("]")+1)); prev = next;
}
}
subMsg = msg.substring(next);
kv.
put(String.
valueOf(subMsg.
charAt(0)),subMsg.
substring(subMsg.
indexOf("["),subMsg.
lastIndexOf("]")+1));
}
}
aW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7CmltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKY2xhc3MgUmVnZXhUZXN0IHsKCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncyl7CiAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJpZDE6W2xhYmVsMTpsYWJlbDJdOmlkMjpbbGFiZWwxOmxhYmVsMjpsYWJlbDNdOmlkMzpbbGFiZWwxOmxhYmVsMjpsYWJlbDM6bGFiZWw0XSI7CiAgICAgICAgICAgUGF0dGVybiBwYXR0ZXJuID0gUGF0dGVybi5jb21waWxlKCJpZCIpOwogICAgICAgICAgICBIYXNoTWFwPFN0cmluZyxTdHJpbmc+IGt2ID0gbmV3IEhhc2hNYXA8U3RyaW5nLFN0cmluZz4oKTsKICAgICAgICAgICAgTWF0Y2hlciBtID0gcGF0dGVybi5tYXRjaGVyKG1zZyk7CgogICAgICAgICAgICBpbnQgcHJldiA9IC0xOwogICAgICAgICAgICBpbnQgbmV4dCA9IC0xOwogICAgICAgICAgICBpbnQgc3RhcnQgPSAtMTsKICAgICAgICAgICAgaW50IGVuZCA9IC0xOwoKICAgICAgICAgICAgU3RyaW5nIHN1Yk1zZyA9ICIiOwogICAgICAgICAgICB3aGlsZSAobS5maW5kKCkpewogICAgICAgICAgICAgICAgaWYocHJldiA9PSAtMSl7CiAgICAgICAgICAgICAgICAgICAgcHJldiA9IG0uZW5kKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IG0uZW5kKCk7CiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBwcmV2OwogICAgICAgICAgICAgICAgICAgIGVuZCA9ICAgbmV4dDsKICAgICAgICAgICAgICAgICAgICBzdWJNc2cgPSBtc2cuc3Vic3RyaW5nKHN0YXJ0LGVuZCk7CiAgICAgICAgICAgICAgICAgICAga3YucHV0KFN0cmluZy52YWx1ZU9mKHN1Yk1zZy5jaGFyQXQoMCkpLHN1Yk1zZy5zdWJzdHJpbmcoc3ViTXNnLmluZGV4T2YoIlsiKSxzdWJNc2cubGFzdEluZGV4T2YoIl0iKSsxKSk7CiAgICAgICAgICAgICAgICAgICAgcHJldiA9IG5leHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3ViTXNnID0gbXNnLnN1YnN0cmluZyhuZXh0KTsKICAgICAgICAgICAga3YucHV0KFN0cmluZy52YWx1ZU9mKHN1Yk1zZy5jaGFyQXQoMCkpLHN1Yk1zZy5zdWJzdHJpbmcoc3ViTXNnLmluZGV4T2YoIlsiKSxzdWJNc2cubGFzdEluZGV4T2YoIl0iKSsxKSk7CgogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oa3YpOwogICAgICAgIH0KfQo=