You're right. the original code is a beast and the regex's are read from a db table. There are hundreds mostly unique some which just require a match, but most use $1, $2, $3, etc.
My example was something simple in which I tried to convey the problem.
While, your first suggestion may sound silly, I think it is the right fit in this case.
Too bad for you then I guess. I'll just send a few commisseration thoughts over your way for when you're stuck doing code maintenance on that thing. :-(