$re = '/(?>->)(?<method>\w+)\s*\(
(?>
(?>
(?>
(?>
(?<parameter1>(?>(?>\'\d{1,2}:\d{1,2}\')|(?>\'[*\s]+\'))|(?>\'?\d+\'?))?
(\s*,\s*(?<parameter2>(?>(?>\'\d{1,2}:\d{1,2}\')|(?>\'[*\s]+\'))|(?>\'?\d+\'?)))?
(\s*,\s*(?<parameter3>(?>(?>\'\d{1,2}:\d{1,2}\')|(?>\'[*\s]+\'))|(?>\'?\d+\'?)))?
)
)
)?
)?
\)/mx';
$str = '->dailyAt(\'13:00\')
->cron(\'* * * * *\')
->everyMinute(1)
->everyTwoMinutes()
->everyThreeMinutes()
->everyFourMinutes()
->everyFiveMinutes()
->everyTenMinutes()
->everyFifteenMinutes()
->everyThirtyMinutes()
->hourly()
->hourlyAt(17)
->everyTwoHours()
->everyThreeHours()
->everyFourHours()
->everySixHours()
->daily()
->dailyAt(\'13:00\')
->twiceDaily(1, 13)
->weekly()
->weeklyOn(1, \'8:00\')
->monthly()
->monthlyOn(4, \'15:00\')
->twiceMonthly(1, 16, \'13:00\')
->twiceMonthly(\'1\', \'16\', \'13:00\')
->lastDayOfMonth(\'15:00\')
->quarterly()
->yearly()
->yearlyOn(6, 1, \'17:00\')
->timezone(\'America/New_York\')';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
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 PHP, please visit: http://php.net/manual/en/ref.pcre.php