16.1 Co to jest wyrażenie regularne?

import re
regex = re.compile("cześć")
licznik = 0

plik = open("plik_tekstowy.txt", "r")
for linia in plik.readlines():
    if regex.search(linia):
        licznik = licznik + 1
plik.close()
print(licznik)

16.3.1 Raw stringi

r"Cześć"
r"""\tByć albo \nnie być"""
r'Do zobaczenia'
r'''12345'''

>>> r"Cześć" == "Cześć"
True
>>> r"\typ" == "\\typ"
True
>>> r"\typ" == "\typ"
False
>>> print(r"\typ")
\typ
>>> print("\typ")
  yp

16.4 Uzyskiwanie dostępu do dopasowanego tekstu w łańcuchu znaków

import re
regexp = re.compile(r"[-a-zA-Z]+,"                             #A
                    r" [-a-zA-Z]+"                             #B
                    r"( [-a-zA-Z]+)?"                          #C
                    r": (\d\d\d-)?\d\d\d-\d\d\d\d"             #D
                   )
plik = open("plik_tekstowy.txt", "r")
for linia in plik.readlines():
    if regex.search(linia):
        print("No tak, znalazłem dopasowanie. I co z tego?!")
plik.close()


import re
regexp = re.compile(r"(?P<last>[-a-zA-Z]+),"                      #A
                    r" (?P<first>[-a-zA-Z]+)"                     #B
                    r"( (?P<middle>([-a-zA-Z]+)))?"               #C
                    r": (?P<phone>(\d\d\d-)?\d\d\d-\d\d\d\d)"     #D
                   )
plik = open("plik_tekstowy.txt", "r")
for linia in plik.readlines():
    wynik = regex.search(linia)
    if wynik == None:
        print("Oj, to chyba nie jest wpis!")
    else:
        nazwisko = wynik.group('nazwisko')
        imię = wynik.group('imię')
        drugie_imię = wynik.group('imię2')
        if drugie_imię == None:
            drugie_imię = ""
        numer_telefonu = wynik.group('telefon')
        print("Dane osobowe: ", imię, drugie_imię, nazwisko, " Numer tel. ", numer_telefonu) 
plik.close()

16.5 Zastępowanie tekstu wyrażeniem regularnym

>>> import re
>>> tekst = "Jeśli stoi przed Tobą jakiś jakiś problem z procesowaniem tekstu, użyj modułu re"
>>> szablon = r"jakiś jakiś"
>>> regex = re.compile(szablon)
>>> regex.sub("jakiś", tekst)
'Jeśli stoi przed Tobą jakiś problem z procesowaniem tekstu, użyj modułu re'


>>> import re
>>> tekst_int = "1 2 3 4 5"
>>> def int_na_float(dopasowanie):
...     return(dopasowanie.group('cyfra') + ".0")
...
>>> szablon = r"(?P<cyfra>[0-9]+)"
>>> regex = re.compile(szablon)
>>> regex.sub(int_na_float, tekst_int)
'1.0 2.0 3.0 4.0 5.0'

