Групи в низ за замяна в Python

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

Защо е нужно това и как да го използвате нека да разгледаме с примери.

Пример

Нека да намерим всички числа и вместо тях да вмъкнем същите числа, но в кръгли скоби. За това всички намерени числа ще заменим с тях самите, но в скоби:

pythontxt = '1 23 456 xax'

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

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

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

Пример

Нека да намерим всички низове, представляващи числа с 'x' около тях и да заменим тези числа със себе си, но със '!' знаци около:

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'.