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:

pythonflags=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:

pythontxt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)

print(res)

Rezultati i ekzekutimit të kodit:

python'! ! 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:

pythontxt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)

print(res)

Rezultati i ekzekutimit të kodit:

python'! ! ! !'

Shembull

Le të gjejmë me shprehje të rregullt të gjitha kalimet në rresht të ri:

pythontxt = '''aaa
  bbb'''
res = re.sub('\n', '!', txt)

print(res)

Rezultati i kodit të ekzekutuar:

python'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:

pythontxt = '''aaa
  bbb'''
res = re.sub('.', '!', txt)

print(res)

Rezultati i kodit të ekzekutuar:

python'!!!
!!!'

Shembull

Për të korrigjuar këtë gabim, duhet të aplikoni flamun re.DOTALL:

pythonres = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)

Rezultati i kodit të ekzekutuar:

python'!!!!!!!'

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:

pythontxt = '''
  aaa
  AAA
  aaa'''
res = re.sub('aaa$', '!', txt)

print(res)

Rezultati i kodit të ekzekutuar:

python'''
  aaa
  AAA
  !
'''

Shembull

Tani le të vendosim flamun re.M:

pythonres = re.sub('aaa$', '!', txt, flags=re.M)
print(res)

Rezultati i kodit të ekzekutuar:

python'''
  !
  AAA
  !
'''

Shembull

Tani le të aplikojmë edhe flamun për shpërfilljen e rastit:

pythonres = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)

Rezultati i kodit të ekzekutuar:

python'''
  !
  !
  !
'''