⊗pyPmRESF 73 of 129 menu

Příznaky pro řetězce regulárních výrazů v Pythonu

Chcete-li nastavit příznaky jako jeden z volitelných parametrů pro metody pracující s regulárními výrazy, používá se následující syntaxe:

flags=re.číslo příznaku

Základní příznaky pro práci s regulárními výrazy

Příznak Účel
re.IGNORECASE Ignorování velikosti písmen.
re.DOTALL Tečka označuje jakýkoli znak, včetně zalomení řádku.
re.I Způsobí, že vyhledávání není citlivé na velikost písmen.
re.L Hledá slova podle aktuálního jazyka. Tato interpretace ovlivňuje abecední skupinu (\w a \W) a také chování hranice slova (\b a \B).
re.M Znak $ provádí vyhledávání na konci jakéhokoli řádku textu (ne pouze konce textu) a znak ^ provádí vyhledávání na začátku jakéhokoli řádku textu (ne pouze na začátku textu).
re.S Mění hodnotu tečky (.) na shodu s jakýmkoli znakem, včetně nového řádku.
re.U Interpretuje písmena podle sady znaků Unicode. Tento příznak ovlivňuje chování \w, \W, \b, \B. V Pythonu 3+ je tento příznak nastaven ve výchozím stavu.
re.X Umožňuje víceřádkovou syntaxi regulárního výrazu. Ignoruje mezery uvnitř vzoru (s výjimkou mezer uvnitř množiny [] nebo při escapování zpětným lomítkem) a zachází s ne escapovaným '#' jako s komentářem.

Příklad

Pomocí příznaku re.IGNORECASE lze ignorovat velikost písmen. Podívejme se, jak se to dělá. V tomto příkladu regulární výraz najde pouze malá písmena:

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

Výsledek provedení kódu:

'! ! CCC DDD'

Příklad

A nyní přidáme do čtvrtého parametru metody příznak re.IGNORECASE a regulární výraz začne hledat znaky ve všech velikostech písmen:

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

Výsledek provedení kódu:

'! ! ! !'

Příklad

Pojďme najít regulárním výrazem všechna zalomení řádku:

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

Výsledek provedeného kódu:

'aaa!bbb'

Příklad

Ale pokud potřebujete nahradit všechny znaky, tak při použití tečky v regulárním výrazu se nechytí zalomení řádku:

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

Výsledek provedeného kódu:

'!!! !!!'

Příklad

Chcete-li tuto chybu opravit, je třeba použít příznak re.DOTALL:

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

Výsledek provedeného kódu:

'!!!!!!!'

Příklad

V parametru lze předat i několik příznaků, pomocí operátoru +. Nejprve nahradíme písmeno 'a' na konci řádku:

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

Výsledek provedeného kódu:

''' aaa AAA ! '''

Příklad

Nyní nastavíme příznak re.M:

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

Výsledek provedeného kódu:

''' ! AAA ! '''

Příklad

Nyní použijme ještě příznak pro ignorování velikosti písmen:

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

Výsledek provedeného kódu:

''' ! ! ! '''
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout