Skupine simbolov v regularnih izrazih Python
Obstajajo posebni ukazi, ki
omogočajo izbiro celih skupin
simbolov naenkrat. Ukaz \d pomeni številko
od 0 do 9. Ukaz \w
pomeni številko, latinično črko ali znak
podčrtaja. Ukaz \s pomeni
presledek ali presledni simbol: presledek,
prelom vrstice, tabulator. Vrednost ukaza je mogoče obrniti
z uporabo velike črke:
na primer, če je \d - številka, potem je
\D - ne številka.
Primer
Poiščimo vse številke:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Rezultat izvajanja kode:
'! !! !!!'
Primer
Operatorji ponavljanja obravnavajo ukaze-skupine
kot eno celoto, to pomeni, da oklepaji za združevanje
niso potrebni. V naslednjem primeru je vzorec iskanja
takšen: številka od 0 do
9 enkrat ali večkrat:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! abc @@@'
Primer
V naslednjem primeru je vzorec iskanja
takšen: karkoli enkrat ali večkrat,
vendar ne številka od 0 do 9:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Rezultat izvajanja kode:
'123!3!'
Primer
V tem primeru je vzorec iskanja takšen: presledni simbol enkrat:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Rezultat izvajanja kode:
'1!12!123!abc!@@@'
Primer
V tem primeru je vzorec iskanja
takšen: NE presledni simbol enkrat ali večkrat. Vse podnize, ločene
s presledki, bodo zamenjani z '!':
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! ! !'
Primer
V tem primeru je vzorec iskanja
takšen: številka ali črka enkrat ali večkrat. Vsi podnizi, sestavljeni iz številk
in črk, bodo zamenjani z '!':
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! ! ! @@@'
Primer
V tem primeru je vzorec iskanja
takšen: NE številka in NE črka enkrat ali večkrat. V našem primeru pod to definicijo
spada '@@@' in vsi presledki
(tudi ti niso niti številke niti črke).
Bodite pozorni na to, da je na koncu en
'!' - vanj se je spremenil niz
' @@@' - s presledkom spredaj:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Rezultat izvajanja kode:
'1!12!123!Abc!'
Praktične naloge
Podan je niz:
txt = 'a1a a2a a3a a4a a5a aba aca'
Napišite regularni izraz, ki bo našel nize,
v katerih na robovih stojita črki 'a',
med njima pa je ena številka.
Podan je niz:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Napišite regularni izraz, ki bo našel nize,
v katerih na robovih stojita črki 'a',
med njima pa je poljubno število številk.
Podan je niz:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Napišite regularni izraz, ki bo našel nize,
v katerih na robovih stojita črki 'a',
med njima pa je poljubno število številk (vključno
tudi z nič številk, to je niz
'aa').
Podan je niz:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Napišite regularni izraz, ki bo našel nize
naslednje oblike: na robovih stojita črki
'a' in 'b', med njima pa -
ne številka in ne presledek.
Podan je niz:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Napišite regularni izraz, ki bo našel nize
naslednje oblike: na robovih stojita črki
'a' in 'b', med njima pa -
ne črka, ne številka in ne presledek.
Podan je niz:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Napišite regularni izraz, ki bo zamenjal vse
presledke z '!'.