Introduksjon til regulære uttrykk i Python
Regulære uttrykk er kommandoer for komplekst søk og erstatning (eller bare søk). De lar deg gjøre veldig interessante ting, men dessverre er de ganske vanskelige å mestre.
For å begynne å arbeide med regulære uttrykk
i Python, må vi importere en spesiell
modul re:
import re
Modulen re inkluderer metoder
designet for arbeid med regulære
uttrykk. Et regulært uttrykk
er et sett med kommandoer og består
av to typer symboler: de som
representerer seg selv, og kommandosymboler,
som kalles spesialsymboler.
Det er best å bli kjent med regulære uttrykk
ved å bruke metoden sub, som
brukes til erstatninger i en streng. Den første
parameteren til metoden tar hva som skal erstattes,
den andre - med hva den skal erstattes. I den tredje parameteren
angir vi strengen der erstatningen skal gjøres.
I den fjerde valgfrie parameteren
setter vi antall erstatninger. Den enkleste
erstatningen ved hjelp av denne metoden vil
se slik ut:
res = re.sub('a', '!', 'bab')
print(res) # vil skrive ut 'b!b'
Som du la merke til, i det regulære uttrykket
representerer bokstaver seg selv. Det samme
gjelder også for sifre. La oss erstatte sifferet
2 med !:
res = re.sub('2', '!', '12abc3')
print(res) # vil skrive ut '1!abc3'
Men et punktum er et spesialsymbol
og representerer et hvilket som helst tegn. I det neste
eksemplet, la oss finne en delstreng ved å bruke denne
mønsteret: bokstaven 'x', deretter et hvilket som helst
tegn, deretter igjen bokstaven 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # vil skrive ut '! eee'
Gitt en streng:
txt = 'ahb acb aeb aeeb adcb axeb'
Skriv et regulært uttrykk som finner strengene
'ahb', 'acb', 'aeb'
ved mønster: bokstaven 'a', et hvilket som helst
tegn, bokstaven 'b'.
Gitt en streng:
txt = 'aba aca aea abba adca abea'
Skriv et regulært uttrykk som finner strengene
'abba', 'adca', 'abea'
ved mønster: bokstaven 'a', 2
hvilke som helst tegn, bokstaven 'a'.
Gitt en streng:
txt = 'aba aca aea abba adca abea'
Skriv et regulært uttrykk som finner strengene
'abba' og 'abea', uten å fange
'adca'.