Карманы в строке замены в Python

При работе с методом sub, если что-то нужно положить в карман в регулярке, то в строке замены можно вставить содержимое этого кармана написав двойной слеш \ и номер кармана. Например, \1 - первый карман, \2 - второй карман и так далее.

Зачем это нужно и как этим пользоваться давайте посмотрим на примерах.

Пример

Давайте найдем все числа и вместо них вставим эти же числа, но в круглых скобках. Для этого все найденные числа заменим на них самих же, но в скобках:

pythontxt = '1 23 456 xax'

res = re.sub('(\d+)', '(\1)', txt)
print(res)

В результате в переменную запишется следующее:

python'(1) (23) (456) xax'

Пример

Давайте найдем все строки, представляющие собой числа с иксами вокруг и заменим эти числа на них же, но с '!' знаками вокруг:

pythontxt = 'x1x x23x x456x xax'

res = re.sub('x(\d+)x', '!\1!', txt)
print(res)

В результате в переменную запишется следующее:

python'!1! !23! !456! xax'

Пример

Давайте решим следующую задачу: дана строка 'aaa@bbb ccc@ddd' - буквы, потом собака, потом буквы. Нужно поменять местами буквы в подстроке 'aaa@bbb' до '@' и после:

pythontxt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)

print(res)

В результате в переменную запишется следующее:

python'bbb@aaa ccc@ddd'

Практические задачи

Задание 1

Дана строка:

pythontxt = '12 34 56 78'

Поменяйте местами цифры во всех двухзначных числах.

Задание 2

Дана строка с датой:

pythontxt = '31.12.2025'

Преобразуйте эту дату в '2025.12.31'.