PCRE:
preg_match_all ("%
(\d+)\.(\.{0,2})\s+
([KQNBR])?
(([a-h][1-8][a-h][1-8])|
((1-0)|(0-1)|(1/2-1/2)|(\*)))([!?+]|ep)?\s+
(([KQNBR])?
(([a-h][1-8][a-h][1-8])|
((1-0)|(0-1)|(1/2-1/2)|(\*)))([!?+]|ep)?)?
%iUSx",
$game["rawgame"],
$out, PREG_SET_ORDER);
$out[0] does not output this line: 1.Ng1f3 c7c5, but 1.Ng1f3 ?
If the last "?" is taken off it will match, but it will not match 1... c7c5