Групи в низ за замяна в Python
При работа с метода sub, ако
нещо трябва да се постави в група в регулярния израз,
то в низа за замяна може да вмъкнете съдържанието
на тази група като напишете двойна наклонена черта \
и номера на групата. Например, \1 -
първа група, \2 - втора група
и така нататък.
Защо е нужно това и как да го използвате нека да разгледаме с примери.
Пример
Нека да намерим всички числа и вместо тях да вмъкнем същите числа, но в кръгли скоби. За това всички намерени числа ще заменим с тях самите, но в скоби:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
В резултат в променливата ще се запише следното:
'(1) (23) (456) xax'
Пример
Нека да намерим всички низове, представляващи
числа с 'x' около тях и да заменим тези
числа със себе си, но със '!' знаци
около:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
В резултат в променливата ще се запише следното:
'!1! !23! !456! xax'
Пример
Нека да решим следната задача: даден е низ
'aaa@bbb ccc@ddd' - букви, след това
@, след това букви. Трябва да разменим местата
на буквите в подниза 'aaa@bbb' преди
'@' и след:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
В резултат в променливата ще се запише следното:
'bbb@aaa ccc@ddd'
Практически задачи
Даден е низ:
txt = '12 34 56 78'
Разменете цифрите във всички двуцифрени числа.
Даден е низ с дата:
txt = '31.12.2025'
Преобразувайте тази дата във '2025.12.31'.