fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. class Ideone
  8. {
  9. public static void main (String[] args) throws java.lang.Exception
  10. {
  11. final String regex = "(?:^(Mammals?|Reptiles?|Birds?)|\\G(?!^))\\h+(\\d+(?:\\.\\d+)?)";
  12. final String string = "Example 1:\n"
  13. + "March\n"
  14. + " Morning Evening\n"
  15. + " (Avg Count) (Avg Count)\n"
  16. + "Birds 5.6 10.35\n"
  17. + "Mammals 2.0 3.3\n\n\n"
  18. + "Example 2:\n"
  19. + "March\n"
  20. + " Morning Afternoon Evening\n"
  21. + " (Num) (Num) (Num)\n"
  22. + "Birds 5.6 9 10\n"
  23. + "Mammals 2.0 2.5 3.3\n"
  24. + "Reptiles 1.0 5.6 1.75\n\n"
  25. + "Status Avg Total: Birds 24\n"
  26. + "Concerning that numbers have dwindled since last year\n\n"
  27. + "Example 3:\n"
  28. + " Early Mid Late \n"
  29. + " (Count) (Count) (Count)\n"
  30. + "Mammal 2.0 2.5 3.3 (Count)\n"
  31. + "Reptile 1.0 5.6 1.75 (Count)";
  32.  
  33. final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
  34. final Matcher matcher = pattern.matcher(string);
  35.  
  36. while (matcher.find()) {
  37. if (matcher.group(1) != null) {
  38. System.out.println("Row name : " + matcher.group(1));
  39. }
  40. if (matcher.group(2) != null) {
  41. System.out.println("Numbers : " + matcher.group(2));
  42. }
  43. }
  44. }
  45. }
Success #stdin #stdout 0.09s 36268KB
stdin
Standard input is empty
stdout
Row name : Birds
Numbers : 5.6
Numbers : 10.35
Row name : Mammals
Numbers : 2.0
Numbers : 3.3
Row name : Birds
Numbers : 5.6
Numbers : 9
Numbers : 10
Row name : Mammals
Numbers : 2.0
Numbers : 2.5
Numbers : 3.3
Row name : Reptiles
Numbers : 1.0
Numbers : 5.6
Numbers : 1.75
Row name : Mammal
Numbers : 2.0
Numbers : 2.5
Numbers : 3.3
Row name : Reptile
Numbers : 1.0
Numbers : 5.6
Numbers : 1.75