Even if I do this only for fun, I can't imagine a faster method to solve this puzzle.
This work seems to be perfect for the regex engine skills.
The final regex is only the concatanation of a lot of small easy pieces...
But OK, I agree: this is not a good idea to show the generated regex ;-)
I hope I gave no offense. It just struck me that that is truly a "super-sized" regex... and, less significantly (since I forsee no need for maintenance) is a pound-your-thumb-with-a-hammer stinker to maintain. Please, accept my admiration (and the ++ accorded your masterwork before my first reply).