идея то простая - ты делаешь логику, а остальное делают компилеры/оптимизаторы. Если они что-то не умеют, что тебе нужно, ты пилишь то, что тебе нужно и суёшь в инструмент и делишься с комьюнити. Всё просто
чтобы re.compile выдал тебе исходный регексп нужно 1) чтобы исходный регексп был в "нормальной" форме и 2) подать на вход дизъюнкцию всех возможных матчей