Flamuj për vargjet e shprehjeve të rregullta në Python
Për të përcaktuar flamujt si një nga parametrat opsionalë për metodat që punojnë me shprehjet e rregullta, përdoret sintaksa e mëposhtme:
flags=re.emri i flamujt
Flamujt kryesorë për punë me shprehje të rregullta
| Flamuj | Qëllimi |
|---|---|
re.IGNORECASE |
Shpërfillja e rastit të shkrimit të karaktereve. |
re.DOTALL |
Pika shënon çdo karakter, duke përfshirë edhe kalimin në rresht të ri. |
re.I |
E bën kërkimin të pandjeshëm ndaj rastit. |
re.L |
Kërkon fjalë në përputhje me gjuhën aktuale.
Ky interpretim prek grupin alfabetik
(\w dhe \W), si dhe
sjelljen e kufirit të fjalës (\b dhe
\B).
|
re.M |
Karakteri $ kryen kërkim në fund
të çdo rreshti të tekstit (jo vetëm në fund
të tekstit) dhe karakteri ^ kryen kërkim në fillim
të çdo rreshti teksti (jo vetëm në fillim
të tekstit).
|
re.S |
Ndryshon kuptimin e pikës (.) në
përputhje me çdo karakter, duke përfshirë rreshtin
e ri.
|
re.U |
Interpreton shkronjat në përputhje me
setin e karaktereve Unicode. Ky flamuj ndikon
në sjelljen e \w, \W, \b,
\B. Në Python 3+ ky flamuj
është vendosur si parazgjedhje.
|
re.X |
Lejon sintaksë shumërreshtash të shprehjes
së rregullt. Ai shpërfill hapësirat brenda
modelit (përveç hapësirave brenda
setit [] ose kur ekranohen
me backslash) dhe trajton
'#' jo të ekranuar si koment.
|
Shembull
Me ndihmën e flamut re.IGNORECASE mund të
shpërfillni rastin e karaktereve. Le të
shohim se si bëhet kjo. Në këtë shembull
shprehja e rregullt do të gjejë vetëm shkronjat e vogla:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! CCC DDD'
Shembull
Tani le të shtojmë në parametrin e katërt
të metodës flamun re.IGNORECASE dhe shprehja e rregullt
do të fillojë të kërkojë karaktere në të gjitha rastet:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Rezultati i ekzekutimit të kodit:
'! ! ! !'
Shembull
Le të gjejmë me shprehje të rregullt të gjitha kalimet në rresht të ri:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Rezultati i kodit të ekzekutuar:
'aaa!bbb'
Shembull
Por, nëse duhet të zëvendësohen të gjithë karakteret, atëherë duke vendosur pikë në shprehjen e rregullt, nuk do të kapen kalimet e rreshtave:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Rezultati i kodit të ekzekutuar:
'!!!
!!!'
Shembull
Për të korrigjuar këtë gabim, duhet
të aplikoni flamun re.DOTALL:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Rezultati i kodit të ekzekutuar:
'!!!!!!!'
Shembull
Në parametër mund të kalohen edhe disa
flamuj, duke vendosur mes tyre operatorin +.
Le të zëvendësojmë fillimisht shkronjën 'a'
në fund të rreshtit:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa$', '!', txt)
print(res)
Rezultati i kodit të ekzekutuar:
'''
aaa
AAA
!
'''
Shembull
Tani le të vendosim flamun re.M:
res = re.sub('aaa$', '!', txt, flags=re.M)
print(res)
Rezultati i kodit të ekzekutuar:
'''
!
AAA
!
'''
Shembull
Tani le të aplikojmë edhe flamun për shpërfilljen e rastit:
res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Rezultati i kodit të ekzekutuar:
'''
!
!
!
'''