Sümbolite grupid Pythoni regulaaravaldistes
On olemas spetsiaalsed käsud, mis
võimaldavad valida korraga terveid gruppe
sümboleid. Käsk \d tähistab numbrit
0 kuni 9. Käsk \w
tähistab numbrit, ladina tähte või
allakriipsutamise märki. Käsk \s tähistab
tühikut või tühikulist sümbolit: tühik,
rea lõpp, tabeldusmärk. Saate käsu tähendust
inverteerida, kirjutades suure tähe:
näiteks kui \d - number, siis
\D - mitte number.
Näide
Leiame kõik numbrid:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Koodi täitmise tulemus:
'! !! !!!'
Näide
Kordusoperaatorid loevad gruppide käske
üheks tervikuks, see tähendab, et grupeerivad
sulud pole vajalikud. Järgmises näites näeb
otsimismust välja selline: number 0 kuni
9 üks või mitu korda:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! abc @@@'
Näide
Järgmises näites näeb otsimismust välja
nii: kõik mis tahes üks või mitu korda,
aga mitte number 0 kuni 9:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Koodi täitmise tulemus:
'123!3!'
Näide
Selles näites näeb otsimismust välja nii: tühikuline sümbol üks kord:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Koodi täitmise tulemus:
'1!12!123!abc!@@@'
Näide
Selles näites näeb otsimismust välja
nii: MITTE tühikuline sümbol üks või mitu
korda. Kõik tühikutega eraldatud
alamsõnad asendatakse '!'-ga:
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! ! !'
Näide
Selles näites näeb otsimismust välja
nii: number või täht üks või mitu
korda. Kõik numbritest ja tähtedest koosnevad
alamsõnad asendatakse '!'-ga:
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Koodi täitmise tulemus:
'! ! ! ! @@@'
Näide
Selles näites näeb otsimismust välja
nii: MITTE number ja MITTE täht üks või mitu
korda. Meie juhul vastab sellele
määratlusele '@@@' ja kõik tühikud
(need pole ju numbrid ega tähed).
Pange tähele, et lõpus on üks
'!' - sellesse muudeti string
' @@@' - ees oleva tühikuga:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Koodi täitmise tulemus:
'1!12!123!Abc!'
Praktilised ülesanded
Antud string:
txt = 'a1a a2a a3a a4a a5a aba aca'
Kirjutage regulaaravaldis, mis leiab stringid,
milles servades on tähed 'a',
ja nende vahel on üks number.
Antud string:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Kirjutage regulaaravaldis, mis leiab stringid,
milles servades on tähed 'a',
ja nende vahel on suvaline arv numbreid.
Antud string:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Kirjutage regulaaravaldis, mis leiab stringid,
milles servades on tähed 'a',
ja nende vahel on suvaline arv numbreid (sealhulgas
ka null numbrit, see tähendab string
'aa').
Antud string:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Kirjutage regulaaravaldis, mis leiab stringid
järgmisel kujul: servades on tähed
'a' ja 'b', ja nende vahel -
mitte number ega tühik.
Antud string:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Kirjutage regulaaravaldis, mis leiab stringid
järgmisel kujul: servades on tähed
'a' ja 'b', ja nende vahel -
mitte täht, mitte number ega tühik.
Antud string:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Kirjutage regulaaravaldis, mis asendab kõik
tühikud '!'-ga.