import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?>->)(?<method>\\w+)\\s*\\(\n"
+ " (?>\n"
+ " (?>\n"
+ " (?>\n"
+ " (?>\n"
+ " (?<parameter1>(?>(?>'\\d{1,2}:\\d{1,2}')|(?>'[*\\s]+'))|(?>'?\\d+'?))?\n"
+ " (\\s*,\\s*(?<parameter2>(?>(?>'\\d{1,2}:\\d{1,2}')|(?>'[*\\s]+'))|(?>'?\\d+'?)))?\n"
+ " (\\s*,\\s*(?<parameter3>(?>(?>'\\d{1,2}:\\d{1,2}')|(?>'[*\\s]+'))|(?>'?\\d+'?)))?\n"
+ " )\n"
+ " )\n"
+ " )?\n"
+ " )?\n"
+ "\\)";
final String string = "->dailyAt('13:00')\n"
+ "->cron('* * * * *')\n"
+ "->everyMinute(1)\n"
+ "->everyTwoMinutes()\n"
+ "->everyThreeMinutes()\n"
+ "->everyFourMinutes()\n"
+ "->everyFiveMinutes()\n"
+ "->everyTenMinutes()\n"
+ "->everyFifteenMinutes()\n"
+ "->everyThirtyMinutes()\n"
+ "->hourly()\n"
+ "->hourlyAt(17)\n"
+ "->everyTwoHours()\n"
+ "->everyThreeHours()\n"
+ "->everyFourHours()\n"
+ "->everySixHours()\n"
+ "->daily()\n"
+ "->dailyAt('13:00')\n"
+ "->twiceDaily(1, 13)\n"
+ "->weekly()\n"
+ "->weeklyOn(1, '8:00')\n"
+ "->monthly()\n"
+ "->monthlyOn(4, '15:00')\n"
+ "->twiceMonthly(1, 16, '13:00')\n"
+ "->twiceMonthly('1', '16', '13:00')\n"
+ "->lastDayOfMonth('15:00')\n"
+ "->quarterly()\n"
+ "->yearly()\n"
+ "->yearlyOn(6, 1, '17:00')\n"
+ "->timezone('America/New_York')";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.COMMENTS);
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