import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^rate\\((?:1\\s(?:hour|minute|day)|(?:[2-9]|[1-9][0-9]+)\\s(?:hours|minutes|days))\\)|cron\\(\\s*(?:\\*|(?<minutes>0|[1-5]{0,1}[0-9]?)(?:(?:,(?P>minutes))*|(?:-(?P>minutes)){0,1}(?:\\/[[:digit:]]){0,1}))\\s\\s*(?:\\*|(?<hours>0|[1]{0,1}[0-9]?|2[0-3])(?:(?:,(?P>hours))*|(?:-(?P>hours)){0,1}(?:\\/[[:digit:]]){0,1}))\\s\\s*(?:(?<qDays>\\?)|\\*(?<days>[1-2]{0,1}[1-9]?|31|10|20|30)(?:(?:,(?P>days))*|(?:-(?P>days)){0,1}(?:\\/[[:digit:]]){0,1}|L|W))\\s\\s*(?:\\*|(?<month>[1-9]|1[0-2])(?:(?:,(?P>month))*|(?:-(?P>month)){0,1}(?:\\/[[:digit:]]){0,1})|(?<alphamonth>JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:,(?P>alphamonth))*|(?:-(?P>alphamonth)){0,1}(?:\\/[[:digit:]]){0,1}))\\s\\s*(?(<qDays>)(?:\\*|(?<week>[1-7])(?:(?:,(?P>week))*|(?:-(?P>week)){0,1}(?:\\/[[:digit:]]){0,1}|L|#[1-5])|(?<alphaweek>MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:,(?P>alphaweek))*|(?:-(?P>alphaweek)){0,1}(?:\\/[[:digit:]]){0,1}))|\\?)\\s\\s*(?:\\*|(?<year>19[7-9][0-9]|2[0-1][0-9][0-9])(?:(?:,(?P>year))*|(?:-(?P>year)){0,1}(?:\\/[[:digit:]]){0,1}))\\s*\\)$";
final String string = "cron(0 10 * * ? *)\n"
+ "cron(* * * * ? *)\n"
+ "cron(0 18 ? * MON-FRI *)\n"
+ "cron(15 10 ? * 6L 2002-2005)\n"
+ "cron(5,35 14 * * ? *)\n"
+ "cron(0 8 ? * 1#4 *)\n"
+ "cron(0 10 * * ? *)\n"
+ "rate(1 minute)\n"
+ "rate(5 minutes)\n"
+ "rate(298 minutes)\n"
+ "rate(2 minute)\n"
+ "cron(0 10 * * * *)";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
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