fork(2) download
  1. import java.util.regex.*;
  2.  
  3. class Main {
  4. public static void main(String[] args) throws java.lang.Exception {
  5. parseInformation("1y30d");
  6. parseInformation("1y2m30mi");
  7. parseInformation("1y1mi");
  8. parseInformation("1y2m3d4h5mi6s");
  9. }
  10.  
  11. public static void parseInformation(String information) {
  12. Pattern p = Pattern.compile("(?:(\\d+)y)?(?:(\\d+)m(?!i))?(?:(\\d+)d)?(?:(\\d+)h)?(?:(\\d+)mi)?(?:(\\d+)s)?");
  13. Matcher m = p.matcher(information);
  14. while (m.find()) {
  15. if (m.group().isEmpty()) { continue; /* found nothing, go on */ }
  16. System.out.println(information + " found: '"+m.group()+"'");
  17. System.out.println("\t" + m.group(1) + " years");
  18. System.out.println("\t" + m.group(2) + " months");
  19. System.out.println("\t" + m.group(3) + " days");
  20. System.out.println("\t" + m.group(4) + " hours");
  21. System.out.println("\t" + m.group(5) + " minutes");
  22. System.out.println("\t" + m.group(6) + " seconds");
  23. System.out.println("");
  24. }
  25. }
  26. }
Success #stdin #stdout 0.07s 380160KB
stdin
Standard input is empty
stdout
1y30d found: '1y30d'
	1 years
	null months
	30 days
	null hours
	null minutes
	null seconds

1y2m30mi found: '1y2m30mi'
	1 years
	2 months
	null days
	null hours
	30 minutes
	null seconds

1y1mi found: '1y1mi'
	1 years
	null months
	null days
	null hours
	1 minutes
	null seconds

1y2m3d4h5mi6s found: '1y2m3d4h5mi6s'
	1 years
	2 months
	3 days
	4 hours
	5 minutes
	6 seconds