⊗pyPmREHHy 47 of 129 menu

Myślnik wewnątrz zbiorów w wyrażeniach regularnych Pythona

Myślnik - też jest znakiem specjalnym wewnątrz [ ] (ale na zewnątrz - nie). Jeśli potrzebujesz samego myślnika jako symbolu - umieść go tam, gdzie nie zostanie odebrany jako separator grup.

Dlaczego to ważne: możesz utworzyć grupę symboli, sam tego nie zauważając. Na przykład, tak - '[:-@]' - myślisz, że wybierasz dwukropek, myślnik i małpę, a w rzeczywistości otrzymujesz grupę symboli między : a @. W skład tej grupy wchodzą następujące znaki: ? < = > :

Skąd się wzięły? Z tabeli ASCII - dwukropek ma mniejszy numer niż małpa - i powstaje grupa. Czyli wszystkie grupy powstają według tabeli ASCII (w razie potrzeby można z tego korzystać).

Jak z tym walczyć: umieść symbol myślnika tam, gdzie na pewno nie zostanie odebrany jako symbol grupy, na przykład, na początku lub na końcu (czyli po [lub przed ]).

Można również wyescapować myślnik - wtedy będzie on oznaczał samego siebie niezależnie od pozycji. Na przykład, zamiast [:-@] napisać [:\-@] - i grupy już nie będzie, a będą trzy symbole - dwukropek, myślnik i małpa @.

Przykład

W następującym przykładzie wzorzec wyszukiwania jest taki: cyfra 1, następnie litera od 'a' do 'z', następnie cyfra 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a-z]2', '!', txt) print(res)

Wynik wykonania kodu:

'! 1-2 ! !'

Przykład

Teraz wyescapujmy myślnik. W wyniku wzorzec wyszukiwania jest taki: cyfra 1, następnie litera 'a', lub myślnik, lub litera 'z', następnie cyfra 2:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[a\-z]2', '!', txt) print(res)

Wynik wykonania kodu:

'! ! 1c2 !'

Przykład

Można po prostu przesunąć myślnik, nie escapując go:

txt = '1a2 1-2 1c2 1z2' res = re.sub('1[az-]2', '!', txt) print(res)

Wynik wykonania kodu:

'! ! 1c2 !'

Przykład

W następującym przykładzie wzorzec wyszukiwania jest taki: pierwszy symbol - to małe litery lub myślnik '-', potem dwie litery 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-z-]xx', '!', txt) print(res)

Wynik wykonania kodu:

'! Axx ! @xx'

Przykład

W następującym przykładzie wzorzec wyszukiwania jest taki: pierwszy symbol - to małe, duże litery lub myślnik '-', potem dwie litery 'x':

txt = 'axx Axx -xx @xx' res = re.sub('[a-zA-Z-]xx', '!', txt) print(res)

Wynik wykonania kodu:

'! ! ! @xx'

Przykład

Można umieścić myślnik między dwiema grupami - tam na pewno nie utworzy jeszcze jednej grupy:

txt = 'axx 9xx -xx @xx' res = re.sub('[a-z-0-9]xx', '!', txt) print(res)

Wynik wykonania kodu:

'! ! ! @xx'

Zadania praktyczne

Dany jest ciąg:

txt = 'xaz xBz xcz x-z x@z'

Znajdź wszystkie ciągi według następującego wzorca: litera 'x', duża lub mała litera lub myślnik, litera 'z'.

Dany jest ciąg:

txt = 'xaz x$z x-z xcz x+z x%z x*z'

Znajdź wszystkie ciągi według następującego wzorca: litera 'x', następnie lub dolar, lub myślnik lub plus, potem litera 'z'.

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ć