Zastave za nize regularnih izrazov v Pythonu

Za nastavitev zastav kot enega od neobveznih parametrov za metode, ki delujejo z regularnimi izrazi, uporabimo naslednjo sintakso:

pythonflags=re.ime zastave

Osnovne zastave za delo z regularnimi izrazi

Zastava Namen
re.IGNORECASE Ignoriranje velikosti črk.
re.DOTALL Pika predstavlja kateri koli znak, vključno z prelomom vrstice.
re.I Naredi iskanje neobčutljivo na velikost črk.
re.L Išče besede v skladu s trenutnim jezikom. Ta interpretacija vpliva na abecedno skupino (\w in \W), kot tudi na obnašanje meje besede (\b in \B).
re.M Znak $ izvede iskanje na koncu katere koli vrstice besedila (ne le konca besedila) in znak ^ izvede iskanje na začetku katere koli vrstice besedila (ne le na začetku besedila).
re.S Spremeni vrednost pike (.) na ujemanje s katerim koli znakom, vključno z novo vrstico.
re.U Interpretira črke v skladu z nizom znakov Unicode. Ta zastava vpliva na obnašanje \w, \W, \b, \B. V Pythonu 3+ je ta zastava nastavljena privzeto.
re.X Dovoli večvrstično sintakso regularnega izraza. Ignorira presledke znotraj vzorca (razen presledkov znotraj nabora [] ali pri ekraniranju z obratno poševnico) in obravnava ne ekraniran '#' kot komentar.

Primer

Z zastavo re.IGNORECASE lahko ignoriramo velikost črk. Poglejmo, kako se to naredi. V tem primeru bo regularni izraz našel le male črke:

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

print(res)

Rezultat izvajanja kode:

python'! ! CCC DDD'

Primer

In zdaj dodajmo v četrti parameter metode zastavo re.IGNORECASE in regularni izraz bo začel iskati znake v vseh velikostih črk:

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

print(res)

Rezultat izvajanja kode:

python'! ! ! !'

Primer

Poiščimo z regularnim izrazom vse prelome vrstic:

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

print(res)

Rezultat izvedene kode:

python'aaa!bbb'

Primer

Toda, če želimo zamenjati res vse znake, potem z uporabo pike v regularnem izrazu ne bomo zajeli prelomov vrstic:

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

print(res)

Rezultat izvedene kode:

python'!!!
!!!'

Primer

Za popravilo te napake je treba uporabiti zastavo re.DOTALL:

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

Rezultat izvedene kode:

python'!!!!!!!'

Primer

V parametru lahko posredujemo tudi več zastav, tako da med njimi postavimo operator +. Najprej zamenjajmo črko 'a' na koncu vrstice:

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

print(res)

Rezultat izvedene kode:

python'''
  aaa
  AAA
  !
'''

Primer

Zdaj pa postavimo zastavo re.M:

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

Rezultat izvedene kode:

python'''
  !
  AAA
  !
'''

Primer

Zdaj pa uporabimo še zastavo za ignoriranje velikosti črk:

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

Rezultat izvedene kode:

python'''
  !
  !
  !
'''