×
Dodano do koszyka:
Pozycja znajduje się w koszyku, zwiększono ilość tej pozycji:
Zakupiłeś już tę pozycję:
Książkę możesz pobrać z biblioteki w panelu użytkownika
Pozycja znajduje się w koszyku
Przejdź do koszyka

Zawartość koszyka

ODBIERZ TWÓJ BONUS :: »

Wyrażenia regularne

Pierwsze wyrażenie regularne w Pythonie


import re
names = ["Sebastian", "Seweryn", "Anna", "Wojciech"]
pattern = "Se"
for name in names:
    match = re.search(pattern, name)
    if match:
        print("Wzorzec wykryty w tekście", name)
        print(match.start())
        print(match.end())
        print(match.span())
        print(match.pos)
        print(match.endpos)
        print(match)
    else:
        print("Wzorzec nie wykryty w tekście", name)

Oto wynik wykonania powyższego kodu:


Wzorzec wykryty w tekście Sebastian

      0
      2
      (0, 2)
      0
      9
<re.Match object; span=(0, 2), match='Se'>

      Wzorzec wykryty w tekście Seweryn
      0
      2
      (0, 2)
      0
      7
      <re.Match object; span=(0, 2), match='Se'>
      
      Wzorzec nie wykryty w tekście Anna
      
      Wzorzec nie wykryty w tekście Wojciech

Jak już wspomniałem, wyrażeniami regularnymi w Pythonie zajmuje się moduł re. Udostępnia on wiele funkcji, takich jak: search(), match(), findall(), finditer(), split(), sub(). Zacznijmy od pierwszej ze wspomnianych funkcji, czyli search(). Szuka ona pierwszego dopasowania wyrażenia regularnego (podanego jako pierwszy parametr — pattern) w łańcuchu tekstowym (podanym jako drugi parametr — input_text). Jeśli brak dopasowania, otrzymujemy wartość None. Natomiast jeśli znaleziono dopasowanie, otrzymujemy obiekt MatchObject i funkcja kończy działanie. Właśnie z tego powodu, że otrzymujemy wyłącznie pierwsze znalezione dopasowanie, funkcja nadaje się bardziej do testów wyrażeń regularnych lub czynności weryfikacyjnych niż do zastosowań operacyjnych na tekście. Obiekt MatchObject udostępnia kilka pożytecznych pól i metod: start — początek wystąpienia dopasowania, end — koniec wystąpienia dopasowania, span — krotka zawierająca początek i koniec dopasowania.

W powyższym przykładzie pattern był zwykłym łańcuchem tekstowym (string). Jednak jest alternatywna opcja z kompilacją wstępną wyrażenia regularnego za pomocą funkcji re.compile(). Warto używać tego rozwiązania, jeśli np. wyrażenie regularne jest bardzo skomplikowane i „pracuje” na dużych tekstach, np. w pętli.

Pierwsze wyrażenie regularne w Pythonie z kompilacją wzorca

import re
names = ["Sebastian", "Seweryn", "Anna", "Wojciech"]
pattern = re.compile("Se")
for name in names:
    match = re.search(pattern, name)
    if match:
        print("Wzorzec wykryty w tekście", name)
        print(match.start())
        print(match.end())
        print(match.span())
        print(match.pos)
        print(match.endpos)
        print(match)
    else:
        print("Wzorzec nie wykryty w tekście", name)

W wyrażeniach regularnych w mamy najczęściej do czynienia z:
- kwantyfikatorami,
- zbiorami,
- skrótami (czy też skrótowymi klasami znaków) oraz znakami specjalnymi,
- flagami,
- grupami.

Zamknij Pobierz aplikację mobilną Helion