Temat 4: Wyrażenia regularne

Wstecz; Ostatnia modyfikacja: 25.03.2015
  • Wyrażenia regularne służą do definiowania wzorców, które wyszukujemy w tekście.
  • Podstawy: wiki pl
  • Kilka przykładów:
  • # -*- coding: utf-8 -*-
    
    """prosty program wykorzystujący re"""
    
    import re # moduł obsługi wyrażeń regularnych
    
    matches = re.findall("kot", "Ala ma kota, Alicja też.")
    for m in matches:
    	print(m)
    
  • [] - zakres znaków
  • matches = re.findall("[kK]ot", "Ala ma kota. Kot nie jest samotny.")
  • ^ - początek linii lub napisu
  • matches = re.findall("^[kK]ot", "Kot! Ala ma kota. \nKot nie jest samotny.", re.MULTILINE)
  • . - dowolny znak
  • matches = re.findall("[kK]ot..", "Ala ma kota. Kot nie jest samotny.")
  • * - dowolna liczba wystąpień
  • + - przynajmniej jedno wystąpienie
  • ? - zero lub jedno wystąpienie
  • \. - traktujemy kropkę jako zwykły znak, a nie znak specjalny
  • matches = re.findall("[0-9]\.[0-9]*", "Ala ma kota. Kot waży 1.32 kg.")
  • \w - w Pythonie skrót do '[a-zA-Z0-9_]'
  • matches = re.findall("[\w\.\-]+@[\w\.\-]+", "Email Ali: ala_test@student.uw.edu.pl")
  • () - grupowanie
  • matches = re.findall("([\w\.\-]+)@([\w\.\-]+)", "Email Ali: ala_test@student.uw.edu.pl")
  • kompilacja wzorca (tworzymy automat tylko raz, a potem re-używamy-szybsze rozwiązanie, gdy używamy danego wyrażenia regularnego wielokrotnie):
  • p = re.compile(pattern)
    matches = p.findall(text)
    
  • Dużo przykładów: tutorial
  • Ćwiczenie 0: załóż konto oraz prywatne repozytorium git o nazwie "studia" na serwerze https://bitbucket.org/. Dodatkowo: (i) wykonaj lokalną kopię repozytorium:
    git init
    git remote add origin https://'username'@bitbucket.org/'username'/studia.git
    
    utwórz notatkę wewnątrz repozytorium:
    echo "notatka" > note
    
    Sprawdź status repozytorium:
    git status
    
    Dodaj pliki do "commitowania":
    git add -A
    
    Commit (lokalne zatwierdzenie zmian):
    git commit -m "komentarz do commit"
    
    Push (wysyła zmiany na serwer)
    git pust origin master
    
    Analogicznie, dodaj do tego repozytorium wszystkie pliki do tej pory utworzone. Utwórz drugą kopię (clone) repozytorium na serwerze obliczeniowym.
    git clone https://'username'@bitbucket.org/'username'/studia.git
    
    Zaktualizuj pliki w drugiej kopii:
    git pull origin master
    
    Przeedytuj plik .gitignore oraz usuń zbędne pliki z repozytorium
    git rm -f note
    
    Wyślij ponownie zmiany na serwer.
  • Ćwiczenie 1: przepisz wewnętrzną pętlę w kodzie metody readAstral wykorzystując wyrażenia regularne.
  • Ćwiczenie 2: ze strony http://www.gutenberg.org/ pobierz treść książki "On the Origin of Species" Charlesa Darwina w formacie tekstowym. Napisz program w Pythonie, wykorzystujący wyrażenia regularne, który (i) odfiltruje wszyskie znaki i zwróci listę słów (dodatkowo: policz liczbę wystąpień każdego słowa); (ii) odnajdzie wszystkie zdania zawiezające daty.