Sümbolikomplektid Pythoni regulaaravaldistes

Sümboligrupid \d ja \w ei ole väga paindlikud. Isegi nii lihtne ülesanne nagu leida kõik tähed, kuid mitte numbrid - ei saa nendega lahendatud. Selliste ülesannete jaoks tuleks kasutada ruutsulgusid, mis esindavad 'või' operatsiooni.

Ruutsulud asendavad ühe sümboli, mis tahes loetletut seest. Näiteks nii: x[abc]x - me ütleme, et servades peavad olema tähed x ja seest - üks sümbol: kas 'a', või 'b', või 'c'.

Pärast ruutsulgusid saab kirjutada kordusoperaatoreid. Näiteks nii: x[abc]+x - me ütleme, et x-ide vahel võib olla suvaline arv sümboleid 'a', 'b' ja 'c' - suvalistes kombinatsioonides.

Võib mitte ainult loetleda sümboleid, vaid luua sümboligruppe, kirjutades kahe sümboli vahele kriipsu. Näiteks nii: [a-d] - saame kõik sümbolid alates 'a' kuni 'd'.

Vaatame näidetel.

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline täht alates 'a' kuni 'z':

<

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

<

-python->

Koodi täitmise tulemus:

python'! ! ! x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline täht alates 'a' kuni 'k':

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

print(res)

Koodi täitmise tulemus:

python'! ! xmx x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline täht alates 'A' kuni 'Z':

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

print(res)

Koodi täitmise tulemus:

python'xax ! xcx x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline number alates 0 kuni 9:

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

print(res)

Koodi täitmise tulemus:

python'xax ! ! ! x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline number alatest 3 kuni 7:

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

print(res)

Koodi täitmise tulemus:

python'xax x1x ! ! x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline täht alates 'a' kuni 'z' või number alates 1 kuni 9:

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

print(res)

Koodi täitmise tulemus:

python'! ! ! ! x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline täht alates 'a' kuni 'z' või täht alates 'A' kuni 'Z':

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

print(res)

Koodi täitmise tulemus:

python'! ! ! x5x x@x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel suvaline täht alates 'a' kuni 'z' või numbrid 1, 2:

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

print(res)

Koodi täitmise tulemus:

python'! ! ! ! x3x'

Näide

Selles näites näeb otsimismust välja nii: x-ide vahel tähed alates 'a' kuni 'z' koguses alates 1 ja rohkem:

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

print(res)

Koodi täitmise tulemus:

python'xx ! ! ! x123x xa3x'

Näide

Teeme nii, et tähtede arv võiks olla ka null:

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

print(res)

Tulemusena saame:

python'! ! ! ! x123x xa3x'

Näide

Ruutsulgude sees saab ka määrata ekraanitud sümboleid. Leiame tähtede ja numbrite jada, korduva null või mitu korda:

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

print(res)

Koodi täitmise tulemus:

python'! x@x ! ! !'

Näide

Kui meil on vaja määrata veel ühed ruutsulud, siis me ka need kindlasti ekraanime:

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

print(res)

Koodi täitmise tulemus:

python'! ! ! x3x'

Praktilised ülesanded

Задание 1

Antud string:

pythontxt = 'aba aea aca aza axa'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - täht 'b', 'e' või 'x'.

Задание 2

Antud string:

pythontxt = 'a1a a3a a7a a9a aba'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - number alates 3 kuni 6.

Задание 3

Antud string:

pythontxt = 'aba aea afa aha aga'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - täht alates 'a' kuni 'g'.

Задание 4

Antud string:

pythontxt = 'aba aea afa aha aga'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - täht alates 'a' kuni 'f' ja alates 'j' kuni 'z'.

Задание 5

Antud string:

pythontxt = 'aAa aea aEa aJa a3a'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - täht alates 'a' kuni 'f' ja alates 'A' kuni 'D'.

Задание 6

Antud string:

pythontxt = 'aAXa aeffa aGha aza ax23a a3sSa'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - väikesed ladina tähed, puudutamata teisi.

Задание 7

Antud string:

pythontxt = 'aAXa aeffa aGha aza ax23a a3sSa'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - väikesed ja suured ladina tähed, puudutamata teisi.

Задание 8

Antud string:

pythontxt = 'aAXa aeffa aGha aza ax23a a3sSa'

Kirjutage regulaaravaldis, mis leiab järgmise mustri järgi: servades on tähed 'a' ja nende vahel - väikesed ladina tähed ja numbrid, puudutamata teisi.