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:
flags=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:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Rezultat izvajanja kode:
'! ! 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:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Rezultat izvajanja kode:
'! ! ! !'
Primer
Poiščimo z regularnim izrazom vse prelome vrstic:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Rezultat izvedene kode:
'aaa!bbb'
Primer
Toda, če želimo zamenjati res vse znake, potem z uporabo pike v regularnem izrazu ne bomo zajeli prelomov vrstic:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Rezultat izvedene kode:
'!!!
!!!'
Primer
Za popravilo te napake je treba
uporabiti zastavo re.DOTALL:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Rezultat izvedene kode:
'!!!!!!!'
Primer
V parametru lahko posredujemo tudi več
zastav, tako da med njimi postavimo operator +.
Najprej zamenjajmo črko 'a'
na koncu vrstice:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa
, '!', txt)
print(res)
Rezultat izvedene kode:
'''
aaa
AAA
!
'''
Primer
Zdaj pa postavimo zastavo re.M:
res = re.sub('aaa
, '!', txt, flags=re.M)
print(res)
Rezultat izvedene kode:
'''
!
AAA
!
'''
Primer
Zdaj pa uporabimo še zastavo za ignoriranje velikosti črk:
res = re.sub('aaa
, '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Rezultat izvedene kode:
'''
!
!
!
'''