Simbolu grupas Python regulārajās izteiksmēs
Pastāv īpašas komandas, kas
ļauj atlasīt uzreiz veselas grupas
simbolu. Komanda \d nozīmē ciparu
no 0 līdz 9. Komanda \w
apzīmē ciparu, latīņu burtu vai apakšsvītras
zīmi. Komanda \s apzīmē
atstarpes simbolu: atstarpi,
rindas beigas, tabulāciju. Var invertēt
komandas nozīmi, rakstot lielo burtu:
piemēram, ja \d - cipars, tad
\D - nav cipars.
Piemērs
Atradīsim visus ciparus:
txt = '1 12 123'
res = re.sub('\d', '!', txt)
print(res)
Koda izpildes rezultāts:
'! !! !!!'
Piemērs
Atkārtošanās operatori uzskata komandu-grupas
par vienu veselu, tas ir, grupējošas iekavas
nav vajadzīgas. Nākamajā piemērā meklēšanas šablons
izskatās šādi: cipars no 0 līdz
9 vienu vai vairāk reizes:
txt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! abc @@@'
Piemērs
Nākamajā piemērā meklēšanas šablons izskatās
šādi: jebkas viens vai vairāk reizes,
bet ne cipars no 0 līdz 9:
txt = '123abc3@@'
res = re.sub('\D+', '!', txt)
print(res)
Koda izpildes rezultāts:
'123!3!'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi: atstarpes simbols vienu reizi:
txt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)
print(res)
Koda izpildes rezultāts:
'1!12!123!abc!@@@'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: NAV atstarpes simbols viens vai vairāk
reizes. Visas apakšvirknes, atdalītas
ar atstarpēm, tiks aizvietotas ar '!':
txt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! ! !'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: cipars vai burts viens vai vairāk
reizes. Visas apakšvirknes, kas sastāv no cipariem
un burtiem, tiks aizvietotas ar '!':
txt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! ! @@@'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: NAV cipars un NAV burts viens vai vairāk
reizes. Šajā gadījumā mūsu
gadījumā ietilpst '@@@' un visas atstarpes
(tās arī nav ne cipari, ne burti).
Pievērsiet uzmanību tam, ka beigās viens
'!' - tajā pārveidojās virkne
' @@@' - ar atstarpi priekšā:
txt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)
print(res)
Koda izpildes rezultāts:
'1!12!123!Abc!'
Praktiskie uzdevumi
Dota virkne:
txt = 'a1a a2a a3a a4a a5a aba aca'
Uzrakstiet regulāro izteiksmi, kas atradīs virknes,
kurās malās atrodas burti 'a',
un starp tiem viens cipars.
Dota virkne:
txt = 'a1a a22a a333a a4444a a55555a aba aca'
Uzrakstiet regulāro izteiksmi, kas atradīs virknes,
kurās malās atrodas burti 'a',
un starp tiem jebkurš ciparu skaits.
Dota virkne:
txt = 'aa a1a a22a a333a a4444a a55555a aba aca'
Uzrakstiet regulāro izteiksmi, kas atradīs virknes,
kurās malās atrodas burti 'a',
un starp tiem jebkurš ciparu skaits (ieskaitot
arī nulles ciparu skaitu, tas ir, virkne
'aa').
Dota virkne:
txt = 'avb a1b a2b a3b a4b a5b abb acb'
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
šādā formā: malās atrodas burti
'a' un 'b', un starp tiem -
ne skaitlis, ne atstarpe.
Dota virkne:
txt = 'ave a#b a2b a$b a4b a5b a-b acb'
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
šādā formā: malās atrodas burti
'a' un 'b', un starp tiem -
ne burts, ne cipars, ne atstarpe.
Dota virkne:
txt = 'ave a#a a2a a$a a4a a5a a-a aca'
Uzrakstiet regulāro izteiksmi, kas aizvietos visas
atstarpes ar '!'.