10. Wyrażenia regularne

10.1. Konstruowanie wyrażeń

10.2. Wyciąganie parametrów (zmiennych)

def sprwadzie_ciagow():
    REGEX_IMIE_I_NAZWISKO = r"(?P<first_name>\w+) (?P<last_name>\w+)"

    imie_i_nazwisko = re.compile(REGEX_IMIE_I_NAZWISKO)
    m = imie_i_nazwisko.match('Malcolm Reynolds')

    m.group('first_name')
    'Malcolm'
    m.group('last_name')
    'Reynolds'
    m.group()
    'Malcolm Reynolds'

10.3. Najczęściej wykorzystywane funkcje

10.3.1. match()

10.3.3. findall() i finditer()

10.3.4. compile()

10.5. Przykład

import re

TEKST = """Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. -- Section 1.10.32 of "de Finibus Bonorum et Malorum", written by Cicero in 45 BC"""


SLOWA_ZAWIERAJACE_IS = r'[a-zA-Z0-9]*is[a-zA-Z0-9]*'
wynik = re.findall(SLOWA_ZAWIERAJACE_IS, TEKST)
print(wynik)

SLOWA_ZAWIERAJACE_IS = re.compile(r'[a-zA-Z0-9]*is[a-zA-Z0-9]*')
SLOWA_ZAWIERAJACE_IS.findall(TEKST)
print(wynik)
POPRAWNY_EMAIL = r'(^[a-z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)'


def email_poprawny(email):
    if re.match(POPRAWNY_EMAIL, email):
        print('Poprawny:', email)
        return True
    else:
        print('Niepoprawny:', email)
        return False


email_poprawny('Amatt@astrotech.io')
email_poprawny('matt@astrotech.io')
email_poprawny('+matt@astrotech.io')
email_poprawny('matt+@astrotech.io')
email_poprawny('mattastrotech@.io')

10.6. Zadania kontrolne

10.6.1. Walidacja PESEL

Za pomocą wyrażeń regularnych sprawdź:

  • czy pesel jest poprawny
  • jaka jest data urodzenia? (podaj obiekt datetime.date
  • płeć użytkownika który podał PESEL
Z gwiazdką:
  • sprawdź walidację numerów PESEL dla osób urodzonych po 2000 roku.
  • sprawdź sumę kontrolną