You must remove the begining anchor ^
, since your substring is not at the begining of the string.
If you want to extract something you must add a result variable:
if (preg_match('/([AQ])([0-9]{4})/',$metar, $match))
print_r($match);
Note that for more security, you could add word boundaries:
if (preg_match('/\b([AQ])([0-9]{4})\b/',$metar, $match))
print_r($match);