Fickor i ersättningssträngen i Python
När du arbetar med metoden sub, om
du behöver sätta något i en ficka i det reguljära uttrycket,
kan du i ersättningssträngen infoga innehållet från
den fickan genom att skriva dubbelt snedstreck \
följt av fickans nummer. Till exempel, \1 -
den första fickan, \2 - den andra fickan
och så vidare.
Låt oss titta på exempel för att förstå varför detta är användbart och hur man använder det.
Exempel
Låt oss hitta alla tal och istället för dem sätta in samma tal, men inom parentes. För att göra detta kommer vi att ersätta alla hittade tal med sig själva, men inom parentes:
txt = '1 23 456 xax'
res = re.sub('(\d+)', '(\1)', txt)
print(res)
Som ett resultat kommer följande att skrivas till variabeln:
'(1) (23) (456) xax'
Exempel
Låt oss hitta alla strängar som representerar
tal omgivna av 'x' och ersätta dessa
tal med sig själva, men omgivna av '!'-tecken:
txt = 'x1x x23x x456x xax'
res = re.sub('x(\d+)x', '!\1!', txt)
print(res)
Som ett resultat kommer följande att skrivas till variabeln:
'!1! !23! !456! xax'
Exempel
Låt oss lösa följande problem: given en sträng
'aaa@bbb ccc@ddd' - bokstäver, sedan
ett 'at'-tecken (@), sedan bokstäver. Vi behöver byta plats
på bokstäverna i delsträngen 'aaa@bbb' före
'@' och efter:
txt = 'aaa@bbb ccc@ddd'
res = re.sub('([a-z]+)@([a-z]+)', '\2@\1', txt)
print(res)
Som ett resultat kommer följande att skrivas till variabeln:
'bbb@aaa ccc@ddd'
Praktiska uppgifter
Given en sträng:
txt = '12 34 56 78'
Byt plats på siffrorna i alla tvåsiffriga tal.
Given en sträng med ett datum:
txt = '31.12.2025'
Omvandla detta datum till '2025.12.31'.