Как используя регулярные выражения найти в тексте даты в заданном формате и заменить их на другой формат?

Надо используя регулярные выражения найти в тексте все даты в формате 2016-11-23 и заменяет их на формат 23.11.16.

Было:

Мы изучали этот 2016-11-23

Стало:

Мы изучали этот 23.11.16

Вот код, который получился у меня:

import re

input_filename = "../progr.txt"
result_filename = "../result.txt"

input_file = open(input_filename, mode = 'r', encoding = "utf-8")
resultfile = open(result_filename, mode = 'w', encoding = "utf-8")
mytext = input_file.read()

results = re.sub(r"[\d-]", r"[\d.]", mytext)

print(results)

Дальше, не могу понять, как поменять даты.


Ответы (1 шт):

Автор решения: MaxU

Используйте захватывающие группы (выражения в круглых скобках):

s = "Мы изучали этот 2016-11-23."

results = re.sub(r"\d{2}(\d{2})-(\d{2})-(\d{2})", r"\3.\2.\1", s)
# capturing groups ----> ^^^^^   ^^^^^   ^^^^^

результат:

In [6]: results
Out[6]: 'Мы изучали этот 23.11.16.'
→ Ссылка