Решал данную задачу.
Тогда я написал с около 10-ти регулярок. Просто регулярки надо делать универсальные, например:
r = re.compile(?P<day>__day__)__spl__{1,5}(?P<month>__monthnum__)__spl__{1,5}(?P<year>__year__)?)
__day__ итп. универсальные регулярки определенные заранее в словарике
Задача нет так сложна, как кажется с начала.
Для относительных дата своя регулярка, которая собирается из словарика.
И пост обработка для каждой группы. Типа формат месяца может быть разный, если слова то ищем в словаре.