Jak przeszukiwać dokumenty z pomocą wyrażeń regularnych i Pythona3 – cz. 3.

W poprzednich wpisach mogliście zobaczyć podstawowe informacje dotyczące wyrażeń regularnych i dwa proste przykłady poszukiwania 'kota’. Dziś poszukamy numeru telefonu tego 'kota’.

Załóżmy, że numery telefonu wyglądają tak, że najpierw mają one 3 cyfry, następnie myślnik, 3 cyfry, myślnik i kolejne 3 cyfry (xxx-xxx-xxx). Aby wyszukać tego typu grupy tekstu możemy stworzyć wyrażenie regularne w następujący sposób:
\d{3}-\d{3}-\d{3}

lub

(\d{3})-(\d{3})-(\d{3})

Oprócz dotychczas prezentowanych sposobów prezentacji wyników, możemy użyć też kilku innych funkcji (bardziej przydatnych w naszym przykładzie). Mogą to być:
re.match()
re.search()
re.findall()
re.finditer()

My użyjemy funkcji match ora funkcji findall.

wersja1

wzor_do_znalezienia = re.compile(”’#początek wzorca do znalezienia
(?P\d{3}) #pierwsze 3 cyfry
– #myślnik
(?P\d{3}) #drugie 3 cyfry
– #myślnik
(?P\d{3}) #trzecie 3 cyfry
#koniec wzorca do znalezienia
”’, re.VERBOSE)

print(wzor_do_znalezienia.match(’123-456-789 to numer telefonu naszego kotka’).group(’pierwsze’))
print(wzor_do_znalezienia.match(’123-456-789 to numer telefonu naszego kotka’).group(’drugie’))
print(wzor_do_znalezienia.match(’123-456-789 to numer telefonu naszego kotka’).group(’trzecie’))


wersja 2

wzor_do_znalezienia = re.compile(”’#początek wzorca do znalezienia
\d{3} #pierwsze 3 cyfry
– #myślnik
\d{3} #drugie 3 cyfry
– #myślnik
\d{3} #trzecie 3 cyfry
#koniec wzorca do znalezienia
”’, re.VERBOSE)

print(wzor_do_znalezienia.findall(’Numer 123-456-789 to numer telefonu naszego kotka.’))

Jak zobaczycie po uruchomieniu programu, w pierwszej wersji otrzymamy numer telefonu naszego kotka rozłożony na 3 podgrupy cyfr. W drugiej wersji otrzymamy listę z numerem naszego kotka. Jak się pewnie domyślacie, w drugiej wersji – gdybyśmy mieli więcej numerów w tekście, także i one pojawiłyby się na naszej liście. Możecie popróbować sami różnych kombinacji.

Wyrażenia regularne mogą być bardzo przydatne, mam nadzieję, że te kilka krótkich postów pomogło Wam się do nich przekonać.

Powodzenia w poszukiwaniach.