Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

Previous Tutorial Next Tutorial

Wyrazenia regularne


Wyrażenia regularne to pewne 'wzorce', za pomocą których można opisać ciąg znaków. Za ich pomocą można określić z czego ma się dokładnie składać np. adres e-mail. Istnieje wiele notacji, które służą zapisywaniu wyrażeń regularnych i jedną z nich jest notacja Pythona. Aby skorzystać z narzędzi jakie one nam oferują, wystarczy zaimportować moduł 're'. Na początku rozważmy najprostszy możliwy przykład:

import re

tekst = """Wyobraz sobie, ze ten tekst zawiera numer
PIN 9434 twojej karty do bankomatu, a ty wlasnie go
zapomniales. Jak szybko go odnalezc?"""

sciezka = r'\d\d\d\d'
dopasowanie = re.search(sciezka, tekst)

if dopasowanie: #Sprawdzamy czy udalo sie cos znalezc
    numer = dopasowanie.group()
    print numer

W poniższej linijce sciezka = r'dddd' właśnie utworzyliśmy wyrażenie regularne. Znak r przed ' wyłącza zwykłe formatujące dzialanie . Jest to bardzo ważne ponieważ wyrażenia regularne również buduje się z wykorzystaniem tego znaku. Dołączanie 'r' przed każdym wyrażeniem jest powszechnie rekomendowane jako dobra praktyka programistyczna. Zapis r'd' oznacza liczbę dziesiętną, natomiast r'dddd' oznacza 4 następujące zaraz po sobie liczby dziesiętne. Funkcja search wyszukuje ciąg znaków i zwraca go w postaci specjalnego obiektu 'Match'. Aby wydobyć z niego napis posługujemy się metodą group().

Wyrażenia regularne są często używane przez programistów, ale są dosyć skomplikowane. Zanim się na nie zdecydujesz, poszukaj najpierw prostszych alternatyw. Poniżej kolejny przykład wyrażenia regularnego: r"^(From|To|Cc).*[email protected]" Znak grotu ^ oznacza, że tekst musi być na początku lini. Następnie mamy słowa zgrupowane w nawiasie: (From|To|Cc) Teraz wiemy, że napis ma się zaczynać od jednego ze słów oddzielonych |. Ten znak, to operator 'lub' (ang. OR). Natępne .*? oznacza niezachłanne dopasowanie znaków za wyjątkiem znaku 'n'. Dopasowanie niezachłanne oznacza dopasowanie jak najmniejszej liczby znaków. Znak . oznacza każdy znak za wyjątkiem znaku nowej lini. * oznacza powtórzenie 0 lub więcej razy i znak ? oznacza dopasowanie niezachłanne.

Skonstruowane przez nas wyrażnie odpowiada dwum następującym napisom:

From: [email protected]

To: !asp]<,.      [email protected]

Kompletny opis składni wyrażeń regularnych znajduje się w dokumentacji Pythona.

Tutaj znajduje się przykład "poprawnego" wzorca opisującego adres email (jak jeden z występujących w poniższym ćwiczeniu): wzorzec


This site generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial