I'd still prefer updating the parser's grammar rather than the regex to handle that case.  That is, add a production `main : HYPHEN`.  I don't think `^` and `$` have much of a place in token regexes, it just causes confusion, and I'm not sure how `^` would work, besides, since the regex is never fed the entire string.