fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import java.util.regex.*;
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12.  
  13. String s = "0:ID IN (1002,25);1:ID IN (2,3,4) AND COQ>=0 AND COQ<=9;2:ID IN (73150,73150) AND TOTAL>=0 AND TOTAL<=99999";
  14. Pattern pattern = Pattern.compile("(?:^\\s*(?!\\s*\\d+\\s*:)|\\d+\\s*:)((?:\'[^\']*\'|\"[^\"]*\"|[^;])+)");
  15. Matcher matcher = pattern.matcher(s);
  16. System.out.println("Match 1:\n");
  17. while (matcher.find()){
  18. System.out.println(matcher.group(1));
  19. }
  20. System.out.println("\nMatch 2:\n");
  21. s = "0 :ID IN (1002,25); 1 :ID IN (2,3,4) AND COQ>=0 AND COQ<=9;2:ID IN\n (73150,73150) AND TOTAL>=0 AND TOTAL<=99999";
  22. matcher = pattern.matcher(s);
  23. while (matcher.find()){
  24. System.out.println(matcher.group(1));
  25. }
  26. System.out.println("\nMatch 3:\n");
  27. s = " 0 :NAME = '3:;' OR NAME = \"0 : ;\" ; 1 :CO>=0;2:TOTAL<=99999";
  28. matcher = pattern.matcher(s);
  29. while (matcher.find()){
  30. System.out.println(matcher.group(1));
  31. }
  32. System.out.println("\nMatch 4:\n");
  33. s = "ID IN (1002,25); 1 :ID IN (2,3,4) AND COQ>=0 AND COQ<=9;2:ID IN\n (73150,73150) AND TOTAL>=0 AND TOTAL<=99999";
  34. matcher = pattern.matcher(s);
  35. while (matcher.find()){
  36. System.out.println(matcher.group(1));
  37. }
  38. }
  39. }
Success #stdin #stdout 0.1s 320512KB
stdin
Standard input is empty
stdout
Match 1:

ID IN (1002,25)
ID IN (2,3,4) AND COQ>=0 AND COQ<=9
ID IN (73150,73150) AND TOTAL>=0 AND TOTAL<=99999

Match 2:

ID IN (1002,25)
ID IN (2,3,4) AND COQ>=0 AND COQ<=9
ID IN
 (73150,73150) AND TOTAL>=0 AND TOTAL<=99999

Match 3:

NAME = '3:;' OR NAME = "0 :  ;" 
CO>=0
TOTAL<=99999

Match 4:

ID IN (1002,25)
ID IN (2,3,4) AND COQ>=0 AND COQ<=9
ID IN
 (73150,73150) AND TOTAL>=0 AND TOTAL<=99999