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.