$re = '/(?:(?:[+-]?\d+\.?\d*[ ,]+){5}[+-]?\d+\.?\d*)|(?:(?:[+-]?\d+\.?\d*[ ,]+){2}[+-]?\d+\.?\d*)/m';
$str = 'textbefore 101, 520, 62
GOTO 960.93 796.22 59.20 -0.34 0.00 -89.81
$5GOTO 1960.93 1796.22 159.20 -0.34 0.00 -89.81
501, 513, 162
1040, 1040, 520 text after
error
222, 222
1500, 1500, 60 (1)
1337 1337 65
124.5, 133.6, 35.4
15:13:26 Condition: index_ != StringList::npos [line 178](125, 157, 215)
Allocating shadow map cache 6324 x 6324: 76.28 MB';
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