$re = '/^(@[\d\W\w_]{0,50} )?(\d{1,2})[.:](\d{2}) (t?)(\d{4}) ([\w\W ]{3,20})-([\w\W ]{3,20})(express )? (running|departed) (to |on )?(time)?(([\d]{1,3})([ ]?min|[ ]?hr))?( late| behind schedule)?([ ]early)?/';
$str = '14.00 9331 Naledi-Park Stn running 2min early';
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