Карманы в строке замены в 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'
.