3. Wyrażenia regularne

3.1. Import

>>> import re

3.2. Zastosowania

  • Przetwarzanie tekstu,

    • Znajdowanie wzorców,

    • Oczyszczanie danych

  • Walidacja poprawności danych

3.3. Funkcje w pakiecie re

funkcja

znaczenie oraz użycie

Wynik

re.match

Czy pasuje re.match(r"(\d+)\.(\d+)", "24.1632")

True/False

re.search

Pierwsze położenie re.search('(?<=abc)def', 'abcdef')

re.split

Dzieli po seperatorze re.split(r'\W+', 'a, b, c')

Lista

re.findall

Znajdź wszystkie wystąpienia re.findall('\w+', "A B")

Lista

re.finiter

Znajdź wszystkie wystąpienia re.finditer('\w+', "A B")

Iterator

3.4. Klasy znaków

klasa

znaczenie

.

Dowolny znak

^

Początek linni

$

Koniec linni

Zero lub więcej wystąpień

Jeden lub więcej wystąpień

?

Jeden lub zero wystąpień

{n}

N wystąpięń

{n, m}

Ilość wystąpięń w przedziale od n do m

d

Grupa liczbowa synonim [0-9]

D

Anty grupa liczbowa synonim [^0-9]

w

Grupa “słowna” - synonim [a-zA-Z0-9_]

W

Anty grupa “słowna” - synonim [^a-zA-Z0-9_]

s

Grupa białych znaków - synonim [rntfv]

[abc]

Grupa znaków a, b lub c

[a-z]

Znaki w zakresie od a do z

()

Grupa

3.5. Zadania

3.5.1. Pierwsze

  • Stwórz funkcję sprawdz_ip

    • Funkcja będzie sprawdzać czy IP jest poprawne,

    • Przetestuj funkcję na slowniku hostow

 {
     '127.0.0.1': {'poprawny': None},
     '8.8.8.8': {'poprawny': None},
     'x.x.x.x': {'poprawny': None}
 }

* W miejsce ``x.x.x.x`` wstaw adres hosta w swojej sieci,
* Zaktualizuj flagę ``poprawny``

Hint

Można użyć poniższego wyrażenia regularnego, lub znaleźć / stworzyć bardziej dokładne wyrażenie ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

3.5.2. Drugie

  • Stwórz funkcję sprawdz_email

    • Funkcja będzie sprawdzać czy email jest poprawny

3.5.3. Trzecie

  • Używając biblioteki requests

    • Ściągnij zawartość strony

  • Wydobądź wszystkie tagi html,

  • Wydobądź słowa - które człowiek jest w stanie przeczytać

3.5.4. Czwarte

  • Używając biblioteki collections

    • Wylicz wystąpienia słów z punktu Trzeciego,

    • Wyświetl top 10 najczęstszych słów - wnioski ?,

    • Wyświetl top 70 najczęstszych słów - wnioski ?

3.6. Zasoby

  • Regex Expressions 101 - strona

  • Regular Expressions Cookbook by Steven Levithan, Jan Goyvaerts - książka