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':

<

+Python+> txt = 'xax xbx xcx x@x' res = re.sub('x[a-z]x', '!', txt) print(res)

<

-python->

Koda izpildes rezultāts:

python'! ! ! x@x'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: starp x ir jebkurš burts no 'a' līdz 'k':

pythontxt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'! ! xmx x@x'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: starp x ir jebkurš burts no 'A' līdz 'Z':

pythontxt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'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:

pythontxt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'xax ! ! ! x@x'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: starp x ir jebkurš cipars no 3 līdz 7:

pythontxt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'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:

pythontxt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'! ! ! ! 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':

pythontxt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'! ! ! 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:

pythontxt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'! ! ! ! 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:

pythontxt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'xx ! ! ! x123x xa3x'

Piemērs

Padarīsim tā, lai burtu daudzums varētu būt arī nulle:

pythontxt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)

print(res)

Rezultātā mēs iegūsim:

python'! ! ! ! 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:

pythontxt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'! 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:

pythontxt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)

print(res)

Koda izpildes rezultāts:

python'! ! ! x3x'

Praktiskie uzdevumi

Задание 1

Dota virkne:

pythontxt = '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'.

Задание 2

Dota virkne:

pythontxt = '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.

Задание 3

Dota virkne:

pythontxt = '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'.

Задание 4

Dota virkne:

pythontxt = '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'.

Задание 5

Dota virkne:

pythontxt = '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'.

Задание 6

Dota virkne:

pythontxt = '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.

Задание 7

Dota virkne:

pythontxt = '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.

Задание 8

Dota virkne:

pythontxt = '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.