Crtica unutar skupova u Python regularnim izrazima
Crtica je takođe specijalni karakter unutar [ ]
(ali izvan - nije). Ako vam treba sama
crtica kao simbol - stavite je tamo,
gde neće biti shvaćena kao razdvajač
grupe.
Zašto je ovo važno: možete napraviti grupu
simbola, a da to i ne primetite. Na primer,
ovako - '[:-@]' - mislite da
biramo dvotačku, crticu i znak @, a zapravo
se dobija grupa simbola između
: i @. U ovu grupu ulaze
sledeći simboli: ? < = > :
Odakle oni dolaze? Iz ASCII tabele - dvotačka ima manji broj od znaka @ - i dobija se grupa. Odnosno sve grupe se dobijaju prema ASCII tabeli (po želji, ovim se može koristiti).
Kako se boriti sa ovim: stavite simbol
crticu tamo gde sigurno neće biti shvaćena
kao simbol grupe, na primer, na početku ili
na kraju (odnosno posle [ ili pre
]).
Možete takođe da ekranizujete crticu - tada
će ona označavati samu sebe bez obzira
na poziciju. Na primer, umesto [:-@]
napisati [:\-@] - i grupe već
neće biti, a biće tri simbola - dvotačka,
crtica i znak @.
Primer
U sledećem primeru šablon pretrage je:
cifra 1, zatim slovo od 'a'
do 'z', zatim cifra 2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a-z]2', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! 1-2 ! !'
Primer
Hajde sada da ekranizujemo crticu. Kao
rezultat, šablon pretrage je: cifra
1, zatim slovo 'a', ili
crtica, ili slovo 'z', zatim cifra
2:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[a\-z]2', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! 1c2 !'
Primer
Možete jednostavno da promenite mesto crtici, ne ekranizujući je:
txt = '1a2 1-2 1c2 1z2'
res = re.sub('1[az-]2', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! 1c2 !'
Primer
U sledećem primeru šablon pretrage je:
prvi simbol - to su mala slova ili
crtica '-', zatim dva slova
'x':
txt = 'axx Axx -xx @xx'
res = re.sub('[a-z-]xx', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! Axx ! @xx'
Primer
U sledećem primeru šablon pretrage je:
prvi simbol - to su mala, velika
slova ili crtica '-', zatim dva slova
'x':
txt = 'axx Axx -xx @xx'
res = re.sub('[a-zA-Z-]xx', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! ! @xx'
Primer
Možete smestiti crticu između dve grupe - tamo sigurno neće napraviti još jednu grupu:
txt = 'axx 9xx -xx @xx'
res = re.sub('[a-z-0-9]xx', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! ! @xx'
Praktični zadaci
Data je string:
txt = 'xaz xBz xcz x-z x@z'
Pronađite sve stringove prema sledećem šablonu:
slovo 'x', veliko ili malo
slovo ili crtica, slovo 'z'.
Data je string:
txt = 'xaz x$z x-z xcz x+z x%z x*z'
Pronađite sve stringove prema sledećem šablonu:
slovo 'x', zatim ili dolar, ili
crtica ili plus, zatim slovo 'z'.