Grupuri de caractere în expresiile regulate Python

Există comenzi speciale care permit selectarea întregilor grupuri de caractere deodată. Comanda \d înseamnă cifră de la 0 la 9. Comanda \w desemnează o cifră, o literă latină sau semnul de subliniere. Comanda \s desemnează un spațiu sau un caracter de spațiere: spațiu, sfârșit de linie, tabulație. Se poate inversa semnificația comenzii, scriind litera mare: de exemplu, dacă \d este o cifră, atunci \D înseamnă non-cifră.

Exemplu

Să găsim toate cifrele:

pythontxt = '1 12 123'
res = re.sub('\d', '!', txt)

print(res)

Rezultatul executării codului:

python'! !! !!!'

Exemplu

Operatorii de repetare consideră comenzile-grup ca un întreg, adică parantezele de grupare nu sunt necesare. În următorul exemplu, șablonul de căutare arată astfel: cifră de la 0 la 9 de una sau mai multe ori:

pythontxt = '1 12 123 abc @@@'
res = re.sub('\d+', '!', txt)

print(res)

Rezultatul executării codului:

python'! ! ! abc @@@'

Exemplu

În următorul exemplu, șablonul de căutare arată astfel: orice de una sau mai multe ori, dar nu cifră de la 0 la 9:

pythontxt = '123abc3@@'
res = re.sub('\D+', '!', txt)

print(res)

Rezultatul executării codului:

python'123!3!'

Exemplu

În acest exemplu, șablonul de căutare arată astfel: caracter de spațiere o singură dată:

pythontxt = '1 12 123 abc @@@'
res = re.sub('\s', '!', txt)

print(res)

Rezultatul executării codului:

python'1!12!123!abc!@@@'

Exemplu

În acest exemplu, șablonul de căutare arată astfel: caracter NON-spațiere de una sau mai multe ori. Toate subșirurile, separate prin spații, vor fi înlocuite cu '!':

pythontxt = '1 12 123 abc @@@'
res = re.sub('\S+', '!', txt)

print(res)

Rezultatul executării codului:

python'! ! ! ! !'

Exemplu

În acest exemplu, șablonul de căutare arată astfel: cifră sau literă de una sau mai multe ori. Toate subșirurile, formate din cifre și litere, vor fi înlocuite cu '!':

pythontxt = '1 12 123a Abc @@@'
res = re.sub('\w+', '!', txt)

print(res)

Rezultatul executării codului:

python'! ! ! ! @@@'

Exemplu

În acest exemplu, șablonul de căutare arată astfel: NON-cifră și NON-literă de una sau mai multe ori. În cazul nostru, această definiție se potrivește pentru '@@@' și toate spațiile (ele de asemenea nu sunt cifre și nici litere). Atenție la faptul că la final este un singur '!' - în el a fost transformat șirul ' @@@' - cu spațiu în față:

pythontxt = '1 12 123 Abc @@@'
res = re.sub('\W+', '!', txt)

print(res)

Rezultatul executării codului:

python'1!12!123!Abc!'

Probleme practice

Задание 1

Este dat șirul:

pythontxt = 'a1a a2a a3a a4a a5a aba aca'

Scrieți o expresie regulată care va găsi șirurile, în care la margini sunt literele 'a', iar între ele o singură cifră.

Задание 2

Este dat șirul:

pythontxt = 'a1a a22a a333a a4444a a55555a aba aca'

Scrieți o expresie regulată care va găsi șirurile, în care la margini sunt literele 'a', iar între ele orice număr de cifre.

Задание 3

Este dat șirul:

pythontxt = 'aa a1a a22a a333a a4444a a55555a aba aca'

Scrieți o expresie regulată care va găsi șirurile, în care la margini sunt literele 'a', iar între ele orice număr de cifre (inclusiv zero cifre, adică șirul 'aa').

Задание 4

Este dat șirul:

pythontxt = 'avb a1b a2b a3b a4b a5b abb acb'

Scrieți o expresie regulată care va găsi șiruri de următorul tip: la margini sunt literele 'a' și 'b', iar între ele - nu cifră și nu spațiu.

Задание 5

Este dat șirul:

pythontxt = 'ave a#b a2b a$b a4b a5b a-b acb'

Scrieți o expresie regulată care va găsi șiruri de următorul tip: la margini sunt literele 'a' și 'b', iar între ele - nu literă, nu cifră și nu spațiu.

Задание 6

Este dat șirul:

pythontxt = 'ave a#a a2a a$a a4a a5a a-a aca'

Scrieți o expresie regulată care va înlocui toate spațiile cu '!'.