Príznaky pre reťazce regulárnych výrazov v Pythone
Ak chcete nastaviť príznaky ako jeden z voliteľných parametrov pre metódy pracujúce s regulárnymi výrazmi, použite nasledujúcu syntax:
flags=re.názov príznaku
Základné príznaky pre prácu s regulárnymi výrazmi
| Príznak | Účel |
|---|---|
re.IGNORECASE |
Ignorovanie veľkosti písmen. |
re.DOTALL |
Bodka označuje ľubovoľný znak, vrátane konca riadka. |
re.I |
Vyhľadávanie necitlivé na veľkosť písmen. |
re.L |
Hľadá slová podľa aktuálneho jazyka.
Táto interpretácia ovplyvňuje abecednú
skupinu (\w a \W), ako aj
správanie hranice slova (\b a
\B).
|
re.M |
Znak $ vykoná vyhľadávanie na konci
ľubovoľného riadku textu (nielen na konci textu)
a znak ^ vykoná vyhľadávanie na začiatku
ľubovoľného riadku textu (nielen na začiatku
textu).
|
re.S |
Zmení význam bodky (.) na
zhodu s ľubovoľným znakom, vrátane nového
riadka.
|
re.U |
Interpretuje písmená podľa
sady znakov Unicode. Tento príznak ovplyvňuje
správanie \w, \W, \b,
\B. V Pythone 3+ je tento príznak
nastavený predvolene.
|
re.X |
Umožňuje viacriadkovú syntax regulárneho
výrazu. Ignoruje medzery vo vnútri
vzoru (okrem medzier vo vnútri
množiny [] alebo pri úniku
spätným lomítkom) a spracúva ne
únikovú '#' ako komentár.
|
Príklad
Pomocou príznaku re.IGNORECASE môžete
ignorovať veľkosť písmen. Pozrime sa,
ako sa to robí. V tomto príklade
regulárny výraz nájde len malé písmená:
txt = 'aaa bbb CCC DDD'
res = re.sub('[a-z]+', '!', txt)
print(res)
Výsledok vykonania kódu:
'! ! CCC DDD'
Príklad
A teraz pridajme do štvrtého parametra
metódy príznak re.IGNORECASE a regulárny výraz
začne hľadať znaky vo všetkých veľkostiach písmen:
txt = 'aaa AAA bbb BBB'
res = re.sub('[a-z]+', '!', txt, flags=re.IGNORECASE)
print(res)
Výsledok vykonania kódu:
'! ! ! !'
Príklad
Nájdime regulárnym výrazom všetky konce riadkov:
txt = '''aaa
bbb'''
res = re.sub('\n', '!', txt)
print(res)
Výsledok vykonaného kódu:
'aaa!bbb'
Príklad
Ale ak potrebujete nahradiť úplne všetky znaky, tak použitím bodky v regulárnom výraze nezachytíte konce riadkov:
txt = '''aaa
bbb'''
res = re.sub('.', '!', txt)
print(res)
Výsledok vykonaného kódu:
'!!!
!!!'
Príklad
Na opravu tejto chyby by ste mali
použiť príznak re.DOTALL:
res = re.sub('.', '!', txt, flags=re.DOTALL)
print(res)
Výsledok vykonaného kódu:
'!!!!!!!'
Príklad
Do parametra je možné preniesť aj niekoľko
príznakov, umiestnením operátora + medzi ne.
Najprv nahraďme písmeno 'a'
na konci riadku:
txt = '''
aaa
AAA
aaa'''
res = re.sub('aaa$', '!', txt)
print(res)
Výsledok vykonaného kódu:
'''
aaa
AAA
!
'''
Príklad
Teraz nastavme príznak re.M:
res = re.sub('aaa$', '!', txt, flags=re.M)
print(res)
Výsledok vykonaného kódu:
'''
!
AAA
!
'''
Príklad
Teraz použime aj príznak pre ignorovanie veľkosti písmen:
res = re.sub('aaa$', '!', txt, flags=re.M+re.IGNORECASE)
print(res)
Výsledok vykonaného kódu:
'''
!
!
!
'''