Zastavice za stringove regularnih izraza u Pythonu
Da biste postavili zastavice kao jedan od opcionih parametara za metode koje rade sa regularnim izrazima, koristi se sledeća sintaksa:
flags=re.ime zastavice
Glavne zastavice za rad sa regularnim izrazima
| Zastavica | Namena |
|---|---|
re.IGNORECASE |
Zanemarivanje veličine slova pri pisanju simbola. |
re.DOTALL |
Tačka označava bilo koji simbol, uključujući i prelazak u novi red. |
re.I |
Čini pretragu neosetljivom na veličinu slova. |
re.L |
Traži reči u skladu sa trenutnim jezikom.
Ovo tumačenje utiče na alfabetsku
grupu (\w i \W), kao i na
ponašanje granice reči (\b i
\B).
|
re.M |
Simbol $ vrši pretragu na kraju
bilo koje linije teksta (ne samo kraja teksta)
i simbol ^ vrši pretragu na početku
bilo koje linije teksta (ne samo na početku
teksta).
|
re.S |
Menja značenje tačke (.) na
podudaranje sa bilo kojim simbolom, uključujući novi
red.
|
re.U |
Tumači slova u skladu sa
setom simbola Unicode. Ova zastavica utiče
na ponašanje \w, \W, \b,
\B. U Python-u 3+ ova zastavica
je podešena po podrazumevanim vrednostima.
|
re.X |
Dozvoljava višelinijsku sintaksu regularnog
izraza. Zanemaruje razmake unutar
šablona (izuzev razmaka unutar
seta [] ili pri ekranizaciji
obrnutom kosom crtom) i tretira
neekranizirani '#' kao komentar.
|
Primer
Pomoću zastavice re.IGNORECASE možemo
zanemariti veličinu slova. Hajde da
pogledamo kako se to radi. U ovom primeru
regularni izraz će naći samo mala slova:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Rezultat izvršavanja koda:
'! ! CCC DDD'
Primer
A sada da dodamo u četvrti parametar
metoda zastavicu re.IGNORECASE i regularni izraz
će početi da traži simbole u svim veličinama slova:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Rezultat izvršavanja koda:
'! ! ! !'
Primer
Hajde da pronađemo regularnim izrazom sve prelaze u novi red:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Rezultat izvršenog koda:
'aaa!bbb'
Primer
Ali, ako treba zameniti uopšte sve simbole, onda stavljajući u regularnom izrazu tačku, neće se uhvatiti prelasci u novi red:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Rezultat izvršenog koda:
'!!!
!!!'
Primer
Da bismo ispravili ovu grešku, treba
primeniti zastavicu re.DOTALL:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Rezultat izvršenog koda:
'!!!!!!!'
Primer
U parametru se može proslediti i nekoliko
zastavica, stavivši između njih operator +.
Hajde prvo da zamenimo slovo 'a'
na kraju linije:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa
, '!', txt)
print(res)
Rezultat izvršenog koda:
'''
aaa
AAA
!
'''
Primer
Sada da postavimo zastavicu re.M:
res = re.sub('aaa
, '!', txt, flags=re.M)
print(res)
Rezultat izvršenog koda:
'''
!
AAA
!
'''
Primer
Hajde sada da primenimo i zastavicu za zanemarivanje veličine slova:
res = re.sub('aaa
, '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Rezultat izvršenog koda:
'''
!
!
!
'''