Rakstzīmju kopas Python regulārajās izteiksmēs
Rakstzīmju grupas \d un \w nav
ļoti elastīgas. Pat tāds vienkāršs uzdevums
kā atrast visas burtus, bet ne ciparus -
nevar tikt atrisināts ar tām. Šādiem uzdevumiem
vajadzētu izmantot kvadrātiekavas,
kas apzīmē 'vai' operāciju.
Kvadrātiekavas aizstāj vienu
rakstzīmi, jebkuru no uzskaitītajām iekšpusē. Piemēram,
šādi: x[abc]x - mēs
sakām, ka malās jāatrodas burtiem
x, bet iekšpusē - viena rakstzīme: vai nu 'a',
vai 'b', vai 'c'.
Pēc kvadrātiekavām var rakstīt
atkārtošanās operatorus. Piemēram, šādi:
x[abc]+x - mēs sakām, ka iekšpusē
x var būt jebkurš rakstzīmju skaits
'a', 'b' un 'c' -
jebkādās kombinācijās.
Var ne tikai uzskaitīt rakstzīmes, bet
arī izveidot rakstzīmju grupas, ierakstot starp
divām rakstzīmām defisi. Piemēram, šādi:
[a-d] - mēs iegūstam visas rakstzīmes no
'a' līdz 'd'.
Apskatīsim piemērus.
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš burts no
'a' līdz 'z':
Koda izpildes rezultāts:
'! ! ! x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš burts no
'a' līdz 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! xmx x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš burts no
'A' līdz 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'xax ! xcx x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš cipars no 0
līdz 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'xax ! ! ! x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš cipars no 3
līdz 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'xax x1x ! ! x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš burts no
'a' līdz 'z' vai cipars no
1 līdz 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! ! x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš burts no
'a' līdz 'z' vai burts no
'A' līdz 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! x5x x@x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir jebkurš burts no
'a' līdz 'z' vai cipari 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! ! x3x'
Piemērs
Šajā piemērā meklēšanas šablons izskatās
šādi: starp x ir burti no 'a'
līdz 'z' daudzumā no 1 un
vairāk:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Koda izpildes rezultāts:
'xx ! ! ! x123x xa3x'
Piemērs
Padarīsim tā, lai burtu daudzums varētu būt arī nulle:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Rezultātā mēs iegūsim:
'! ! ! ! x123x xa3x'
Piemērs
Kvadrātiekavu iekšpusē var arī norādīt ekrānētās rakstzīmes. Atradīsim burtu un ciparu secību, atkārtojoties nulli vai vairāk reizes:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! x@x ! ! !'
Piemērs
Ja mums vajag norādīt vēl vienas kvadrātiekavas, tad mēs tās arī obligāti ekrānējam:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Koda izpildes rezultāts:
'! ! ! x3x'
Praktiskie uzdevumi
Dota virkne:
txt = 'aba aea aca aza axa'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - burts 'b',
'e' vai 'x'.
Dota virkne:
txt = 'a1a a3a a7a a9a aba'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - cipars no
3 līdz 6.
Dota virkne:
txt = 'aba aea afa aha aga'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - burts no
'a' līdz 'g'.
Dota virkne:
txt = 'aba aea afa aha aga'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - burts no
'a' līdz 'f' un no 'j'
līdz 'z'.
Dota virkne:
txt = 'aAa aea aEa aJa a3a'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - burts no
'a' līdz 'f' un no 'A'
līdz 'D'.
Dota virkne:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - mazie
latīņu burti, neaizskarot pārējos.
Dota virkne:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - mazie un
lielie latīņu burti, neaizskarot
pārējos.
Dota virkne:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Uzrakstiet regulāro izteiksmi, kas atradīs pēc
šāda šablona: malās atrodas burti
'a', bet starp tiem - mazie
latīņu burti un cipari, neaizskarot
pārējos.