$re = '/<trkpt\s(?=.*?(\blat\s*=\s*["\']?\s*\b[\d.]+)).*?(\blon\s*=\s*["\']?\s*\b[\d.]+)/';
$str = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<trkpt lat="53.188185" lon="7.216993"></trkpt>
<trkpt lat="53.184541" lon="7.217456"></trkpt>
<trkpt lat="53.188185" lon="7.216993"/> (Kurzschreibweise)
<trkpt lat=\'53.188185\' lon=\'7.216993\'></trkpt> (anderen Anführungszeichen)
<trkpt lat="53.188185" lon="7.216993"></trkpt>
<trkpt lon="7.216993" lat="53.188185"></trkpt>
<trkpt lat="53.188185" foo=\'"\' bar=\'"\' lon="7.216993"></trkpt>
<trkpt lat="53.188185" foo="" bar=">" lon="7.216993"></trkpt>';
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