I'm trying to parse several coordinates, but PHP preg_match is missing a capture group. It works in every regex simulator I've tested, but not in my code. Group 4 always comes up empty;
$coordinates = 'N40.765775° E8.303369°';
// -40.765775° -8.303369°
// 40.765775° 8.303369°
// -40.765775° 8.303369°
// N40.765775° E8.303369°
// S40.765775° E8.303369°
// N40.765775° W8.303369°
// S40.765775° W8.303369°
$regex = '/([-NnSs]?)\D*([0-9]?[0-9])\.(\d{1,10}+)\D\h*([-EeWw]?)\D*([0-1]?[0-9]?[0-9])\.(\d{1,10}+)/';
if (preg_match($regex, $coordinates, $matches)) {
print_r($matches);
} else {
echo "no matches";
}