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

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

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

## Пример

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

`txt = '1 23 456 xax' res = re.sub('(\d+)', '(\\1)', txt) print(res)`

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

`'(1) (23) (456) xax'`

## Пример

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

`txt = 'x1x x23x x456x xax' res = re.sub('x(\d+)x', '!\\1!', txt) print(res)`

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

`'!1! !23! !456! xax'`

## Пример

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

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

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

`'bbb@aaa ссс@ddd'`

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

Дана строка:

`txt = '12 34 56 78'`

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

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

`txt = '31.12.2025'`

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

← →
↑