fork(1) download
  1. import java.util.HashMap;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4. class RegexTest {
  5.  
  6. public static void main(String[] args){
  7. String msg = "id1:[label1:label2]:id2:[label1:label2:label3]:id3:[label1:label2:label3:label4]";
  8. Pattern pattern = Pattern.compile("id");
  9. HashMap<String,String> kv = new HashMap<String,String>();
  10. Matcher m = pattern.matcher(msg);
  11.  
  12. int prev = -1;
  13. int next = -1;
  14. int start = -1;
  15. int end = -1;
  16.  
  17. String subMsg = "";
  18. while (m.find()){
  19. if(prev == -1){
  20. prev = m.end();
  21. }
  22. else
  23. {
  24. next = m.end();
  25. start = prev;
  26. end = next;
  27. subMsg = msg.substring(start,end);
  28. kv.put(String.valueOf(subMsg.charAt(0)),subMsg.substring(subMsg.indexOf("["),subMsg.lastIndexOf("]")+1));
  29. prev = next;
  30. }
  31. }
  32. subMsg = msg.substring(next);
  33. kv.put(String.valueOf(subMsg.charAt(0)),subMsg.substring(subMsg.indexOf("["),subMsg.lastIndexOf("]")+1));
  34.  
  35. System.out.println(kv);
  36. }
  37. }
  38.  
Success #stdin #stdout 0.07s 380224KB
stdin
Standard input is empty
stdout
{3=[label1:label2:label3:label4], 2=[label1:label2:label3], 1=[label1:label2]}