Kapsy v řetězci nahrazení v Pythonu

Při práci s metodou sub, pokud chcete něco uložit do kapsy v regulárním výrazu, můžete do řetězce nahrazení vložit obsah této kapsy napsáním dvojitého lomítka \ a čísla kapsy. Například, \1 - první kapsa, \2 - druhá kapsa a tak dále.

K čemu to je a jak se to používá, se podívejme na příkladech.

Příklad

Najděme všechna čísla a místo nich vložme tato stejná čísla, ale v kulatých závorkách. K tomu všechna nalezená čísla nahradíme jimi samými, ale v závorkách:

pythontxt = '1 23 456 xax'

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

Výsledkem bude, že se do proměnné zapíše následující:

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

Příklad

Najděme všechny řetězce představující čísla s 'x' kolem a nahraďme tato čísla jimi samými, ale s '!' znaménky kolem:

pythontxt = 'x1x x23x x456x xax'

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

Výsledkem bude, že se do proměnné zapíše následující:

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

Příklad

Pojďme vyřešit následující úlohu: je dán řetězec 'aaa@bbb ccc@ddd' - písmena, pak zavináč, pak písmena. Je třeba prohodit místa písmen v podřetězci 'aaa@bbb' před '@' a po:

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

print(res)

Výsledkem bude, že se do proměnné zapíše následující:

python'bbb@aaa ccc@ddd'

Praktické úlohy

Задание 1

Je dán řetězec:

pythontxt = '12 34 56 78'

Prohoďte číslice ve všech dvouciferných číslech.

Задание 2

Je dán řetězec s datem:

pythontxt = '31.12.2025'

Převeďte toto datum na '2025.12.31'.