⊗pyPmRESF 73 of 129 menu

Flagi dla ciągów wyrażeń regularnych w Pythonie

Aby ustawić flagi jako jeden z opcjonalnych parametrów dla metod pracujących z wyrażeniami regularnymi, używa się następującej składni:

flags=re.nazwa_flagi

Główne flagi do pracy z wyrażeniami regularnymi

Flaga Przeznaczenie
re.IGNORECASE Ignorowanie wielkości liter.
re.DOTALL Kropka oznacza dowolny znak, włączając w to znak nowej linii.
re.I Sprawia, że wyszukiwanie jest niewrażliwe na wielkość liter.
re.L Wyszukuje słowa zgodnie z bieżącym językiem. Ta interpretacja dotyczy grupy alfabetycznej (\w i \W), a także zachowania granicy słowa (\b i \B).
re.M Znak $ wykonuje wyszukiwanie na końcu każdej linii tekstu (nie tylko na końcu tekstu) a znak ^ wykonuje wyszukiwanie na początku każdej linii tekstu (nie tylko na początku tekstu).
re.S Zmienia znaczenie kropki (.) na dopasowanie do dowolnego znaku, włączając nową linię.
re.U Interpretuje litery zgodnie z zestawem znaków Unicode. Flaga ta wpływa na zachowanie \w, \W, \b, \B. W Pythonie 3+ flaga ta jest ustawiona domyślnie.
re.X Pozwala na wieloliniową składnię wyrażenia regularnego. Ignoruje spacje wewnątrz wzorca (z wyjątkiem spacji wewnątrz zbioru [] lub gdy są poprzedzone backslashem) i traktuje nie poprzedzony backslashem '#' jako komentarz.

Przykład

Za pomocą flagi re.IGNORECASE można ignorować wielkość liter. Spójrzmy, jak to się robi. W tym przykładzie wyrażenie regularne znajdzie tylko małe litery:

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

Wynik wykonania kodu:

'! ! CCC DDD'

Przykład

A teraz dodajmy w czwartym parametrze metody flagę re.IGNORECASE i wyrażenie regularne zacznie szukać znaków we wszystkich wielkościach liter:

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

Wynik wykonania kodu:

'! ! ! !'

Przykład

Znajdźmy za pomocą wyrażenia regularnego wszystkie znaki nowej linii:

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

Wynik wykonanego kodu:

'aaa!bbb'

Przykład

Ale, jeśli trzeba zastąpić wszystkie znaki, to ustawiając w wyrażeniu regularnym kropkę, nie zostaną przechwycone znaki nowej linii:

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

Wynik wykonanego kodu:

'!!! !!!'

Przykład

Aby poprawić ten błąd, należy zastosować flagę re.DOTALL:

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

Wynik wykonanego kodu:

'!!!!!!!'

Przykład

W parametrze można przekazać także kilka flag, stawiając między nimi operator +. Najpierw zamieńmy literę 'a' na końcu linii:

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

Wynik wykonanego kodu:

''' aaa AAA ! '''

Przykład

Teraz ustawmy flagę re.M:

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

Wynik wykonanego kodu:

''' ! AAA ! '''

Przykład

Zastosujmy teraz jeszcze flagę do ignorowania wielkości liter:

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

Wynik wykonanego kodu:

''' ! ! ! '''
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć