Seturi de caractere în expresiile regulate Python
Grupurile de caractere \d și \w nu
foarte flexibile. Chiar și o sarcină simplă,
găsiți toate literele, dar nu cifrele -
nu poate fi rezolvată de ele. Pentru astfel de sarcini
ar trebui utilizate paranteze pătrate,
reprezentând operația 'sau'.
Parantezele pătrate înlocuiesc un singur
caracter, oricare dintre cele enumerate în interior. De
exemplu, așa: x[abc]x - noi
spunem că pe margini trebuie să fie litere
x, iar în interior - un caracter: sau 'a',
sau 'b', sau 'c'.
După parantezele pătrate se pot scrie
operatori de repetiție. De exemplu, așa:
x[abc]+x - noi spunem că în interiorul
literelor x poate fi orice număr de caractere
'a', 'b' și 'c' - în
orice combinații.
Se pot nu numai enumera caracterele, dar
și crea grupuri de caractere, scriind între
două caractere liniuța. De exemplu, așa:
[a-d] - obținem toate caracterele de la
'a' până la 'd'.
Să vedem exemple.
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice literă de la
'a' până la 'z':
Rezultatul executării codului:
'! ! ! x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice literă de la
'a' până la 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Rezultatul executării codului:
'! ! xmx x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice literă de la
'A' până la 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Rezultatul executării codului:
'xax ! xcx x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice cifră de la 0
până la 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Rezultatul executării codului:
'xax ! ! ! x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice cifră de la 3
până la 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Rezultatul executării codului:
'xax x1x ! ! x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice literă de la
'a' până la 'z' sau cifră de la
1 până la 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! ! x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice literă de la
'a' până la 'z' sau literă de la
'A' până la 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! x5x x@x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x orice literă de la
'a' până la 'z' sau cifrele 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! ! x3x'
Exemplu
În acest exemplu, șablonul de căutare arată
așa: între x litere de la 'a'
până la 'z' în cantitate de la 1 și
mai mult:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Rezultatul executării codului:
'xx ! ! ! x123x xa3x'
Exemplu
Să facem astfel încât numărul de litere să poată fi și zero:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
În rezultat vom obține:
'! ! ! ! x123x xa3x'
Exemplu
În interiorul parantezelor pătrate se pot de asemenea specifica caractere escape-uite. Să găsim secvența de litere și cifre, repetată de zero ori sau mai mult:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Rezultatul executării codului:
'! x@x ! ! !'
Exemplu
Dacă avem nevoie să specificăm alte paranteze pătrate, atunci și pe acestea cu siguranță le escape-uim:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Rezultatul executării codului:
'! ! ! x3x'
Probleme practice
Este dat șirul:
txt = 'aba aea aca aza axa'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - litera 'b',
'e' sau 'x'.
Este dat șirul:
txt = 'a1a a3a a7a a9a aba'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - cifră de la
3 până la 6.
Este dat șirul:
txt = 'aba aea afa aha aga'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - literă de la
'a' până la 'g'.
Este dat șirul:
txt = 'aba aea afa aha aga'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - literă de la
'a' până la 'f' și de la 'j'
până la 'z'.
Este dat șirul:
txt = 'aAa aea aEa aJa a3a'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - literă de la
'a' până la 'f' și de la 'A'
până la 'D'.
Este dat șirul:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - litere mici
latine, fără a afecta celelalte.
Este dat șirul:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - litere mici și
mari latine, fără a afecta
celelate.
Este dat șirul:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Scrieți o expresie regulată, care va găsi după
următorul șablon: pe margini stau literele
'a', iar între ele - litere mici
latine și cifre, fără a afecta
celelate.