Załóżmy, że masz taki tekst:
message = 'Document "cv.doc" was printed on printer: XEROX'
z tego napisu chcesz wyciąć tylko nazwę dokumentu cv.doc. Można by to zrobić posługując się zwykłymi poleceniami pracującymi na napisach, ale nie jest to zbyt wygodne rozwiązanie – trzeba się sporo przy tym napracować, a na dodatek kod będzie nieczytelny, trudny do poprawy i niewydajny.
Za to z pomocą mogą przyjść wyrażenia regularne, np
\"(.*)\"
- Kropka to dowolny znak
- * oznacza dowolną ilość wystąpień tego znaku
- Nawiasy służą do grupowania
- \” – oznacza dopasoanie/wyszukiwaniecudzysłowiów
Żeby skorzystać z wyrażeń regularnych zaimportuj moduł re a potem funką findall wyszukaj wystąpień podnapisów zawartych w tekście
import re matches = re.findall(r'\"(.*)\"',message) for m in matches: print(m)
Komentarze:
A czy można zastąpić * określona liczba? Ze chce, żeby tylko ileś określonych tych znaków wyświetliło?