Если у ваших регулярных выражений нет общих совпадений, вы всегда можете объединить их в гигантские, используя альтернативы, например
( regex1 ) | ( regex2 ) | .... | ( regexN )
Однако, учитывая сложность вашей проблемы, я думаю, вам следует подумать о переходе с регулярных выражений направильная комбинация сканер / парсер.Это займет время заранее, но полученное решение будет намного более управляемым.Почему бы вам не проверить Antlr ?