Это не решение регулярных выражений, но вы можете использовать SimpleDateFormat
, чтобы помочь вам с окончательным форматированием. Вы должны заметить в JavaDoc, что это не потокобезопасный вариант из коробки.
В качестве альтернативы, вы можете использовать DateFormatSymbols.getShortMonths()
и выполнять итерации по месяцам для определения индекса * и форматирования строки вручную.
* не забудьте добавить 1;)
редактирование:
Я не уверен, что то, что вы ищете, возможно в Java regex без возможности вносить изменения в код. Условные конструкции, которые поддерживает Perl, не поддерживаются Java, поскольку Java обеспечивает поддержку if-then-else в качестве языковой функции.