In my terminal at least, `\e;3m` is not valid.  From http://en.wikipedia.org/wiki/ANSI_escape_code, it looks like there can be an arbitrary number of `;`-separated entries here.  So perhaps that should be
`r"^((\d+;)*(\d+)*)([a-zA-Z])"

I'm not sure this matters too much, though..