Introduktion til regulære udtryk i Python
Regulære udtryk er kommandoer til avanceret søgning og erstatning (eller blot søgning). De gør det muligt at gøre meget interessante ting, men er desværre ret svære at lære.
For at begynde at arbejde med regulære udtryk
i Python, er vi nødt til at importere en speciel
modul re:
import re
Modulet re inkluderer metoder,
designet til arbejde med regulære
udtryk. Et regulært udtryk
er et sæt af kommandoer og består
af to typer symboler: dem, som
repræsenterer sig selv, og kommando-symboler,
som kaldes specielle tegn.
Bekendtskab med regulære udtryk er bedst
startet med et eksempel på metoden sub, som
bruges til erstatninger i en streng. Den første
parameter tager metoden, hvad der skal erstattes,
den anden - med hvad der skal erstattes. I den tredje parameter
angiver vi strengen, hvori erstatningen skal foretages.
I den fjerde valgfrie parameter
angiver vi antallet af erstatninger. Den enkleste
erstatning med denne metode vil
se sådan ud:
res = re.sub('a', '!', 'bab')
print(res) # vil udskrive 'b!b'
Som du bemærkede, repræsenterer bogstaver
i det regulære udtryk sig selv. Det samme
gælder for cifre. Lad os erstatte cifret
2 med !:
res = re.sub('2', '!', '12abc3')
print(res) # vil udskrive '1!abc3'
Derimod er et punktum et specielt tegn
og repræsenterer et hvilket som helst tegn. I det næste
eksempel, lad os finde en delstreng ved hjælp af følgende
mønster: bogstavet 'x', derefter hvilket som helst
tegn, derefter igen bogstavet 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # vil udskrive '! eee'
Givet strengen:
txt = 'ahb acb aeb aeeb adcb axeb'
Skriv et regulært udtryk, der finder strengene
'ahb', 'acb', 'aeb'
efter mønsteret: bogstavet 'a', hvilket som helst
tegn, bogstavet 'b'.
Givet strengen:
txt = 'aba aca aea abba adca abea'
Skriv et regulært udtryk, der finder strengene
'abba', 'adca', 'abea'
efter mønsteret: bogstavet 'a', 2
hvilke som helst tegn, bogstavet 'a'.
Givet strengen:
txt = 'aba aca aea abba adca abea'
Skriv et regulært udtryk, der finder strengene
'abba' og 'abea', uden at fange
'adca'.