import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^((((\\d+,)+\\d+|(\\d+(\\/|-|#)\\d+)|\\d+L?|\\*(\\/\\d+)?|L(-\\d+)?|\\?|[A-Z]{3}(-[A-Z]{3})?) ?){5,7})|(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\\d+(ns|us|µs|ms|s|m|h))+)$";
final String string = "# cron\n"
+ "0 0 1 1 * 1\n"
+ "0 0 1 1 * 1,2\n"
+ "0 0 1 1 * 1,2,3\n"
+ "0 0 1 * * 1/4\n"
+ "0 0 * * 0 1-4\n"
+ "0 0 * * * 2/4\n"
+ "0 * * * * *\n\n"
+ "# variations\n"
+ "10 12 * * 1,2,3,4,5\n"
+ "* 10 12 * * 1,2,3,4,5\n"
+ "* */5 * * * *\n\n"
+ "*/4 */4 */4 * * *\n\n"
+ "# At 12:00 pm (noon) every day during the year 2017:\n"
+ "0 0 12 * * ? 2017\n"
+ "# Every 5 minutes starting at 1 pm and ending on 1:55 pm and then starting at 6 pm and ending at 6:55 pm, every day:\n"
+ "0 0/5 13,18 * * ?\n"
+ "# Every minute starting at 1 pm and ending on 1:05 pm, every day:\n"
+ "0 0-5 13 * * ?\n"
+ "# At 1:15 pm and 1:45 pm every Tuesday in the month of June:\n"
+ "0 15,45 13 ? 6 Tue\n"
+ "# At 9:30 am every Monday, Tuesday, Wednesday, Thursday, and Friday:\n"
+ "0 30 9 ? * MON-FRI\n"
+ "# At 9:30 am on 15th day of every month:\n"
+ "0 30 9 15 * ?\n"
+ "# At 6 pm on the last day of every month:\n"
+ "0 0 18 L * ?\n"
+ "# At 6 pm on the 3rd to last day of every month:\n"
+ "0 0 18 L-3 * ?\n"
+ "# At 10:30 am on the last Thursday of every month:\n"
+ "0 30 10 ? * 5L\n"
+ "# At 6 pm on the last Friday of every month during the years 2015, 2016 and 2017:\n"
+ "0 0 18 ? * 6L 2015-2017\n"
+ "# At 10 am on the third Monday of every month:\n"
+ "0 0 10 ? * 2#3\n"
+ "# At 12 am midnight on every day for five days starting on the 10th day of the month:\n"
+ "0 0 0 10/5 * ?\n\n"
+ "# more\n"
+ "0 0 12 * * ?\n"
+ "0 15 10 ? * *\n"
+ "0 15 10 * * ?\n"
+ "0 15 10 * * ? *\n"
+ "0 15 10 * * ? 2005\n"
+ "0 * 14 * * ?\n"
+ "0 0/5 14 * * ?\n"
+ "0 0/5 14,18 * * ?\n"
+ "0 0-5 14 * * ?\n"
+ "0 10,44 14 ? 3 WED\n"
+ "0 15 10 ? * MON-FRI\n"
+ "0 15 10 15 * ?\n"
+ "0 15 10 ? * 6L\n"
+ "0 15 10 ? * 6L 2002-2005\n"
+ "0 15 10 ? * 6#3\n"
+ "0 0 12 1/5 * ?\n"
+ "0 11 11 11 11 ?\n\n"
+ "# predefined\n"
+ "@annually\n"
+ "@yearly\n"
+ "@monthly\n"
+ "@weekly\n"
+ "@daily\n"
+ "@hourly\n"
+ "@reboot\n\n"
+ "# every\n"
+ "@every 5s\n"
+ "@every 20h30m\n\n"
+ "#individual forms\n"
+ "1,2,3\n"
+ "1,2\n"
+ "1/2\n"
+ "1-2\n"
+ "1\n"
+ "*\n"
+ "0\n"
+ "*/4\n"
+ "6#3\n"
+ "L\n"
+ "5L\n"
+ "L-2\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html