The best plan if you want to be really robust is to choose a parser package.
Parse::RecDescent seems to be very popular. I used
Parse::Lex to parse
SGF files for
Games::Go::SGF2misc, but it's a little tricky to get installed if things don't match up right.