Moduł re: search, match, findall, sub
re.search(), re.match(), re.findall(), re.sub(), re.compile() na potrzeby wydajności.
Moduł re: search, match, findall, sub to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Moduł re
Python udostępnia wyrażenia regularne za pośrednictwem wbudowanego modułu re. Podstawowe funkcje to search, match, findall i sub.
Wiedza o tym, po którą funkcję sięgnąć, stanowi połowę sukcesu.
import re # always import it firstre.search — wyszukiwanie w dowolnym miejscu
re.search(pattern, text) przeszukuje cały ciąg znaków w poszukiwaniu pierwszego dopasowania i zwraca obiekt Match albo None, jeśli nic nie zostanie dopasowane.
import re
m = re.search("\d+", "order 42 shipped")
if m:
print(m.group()) # "42"
print(m.start()) # 6re.match — dopasowanie od początku
re.match dopasowuje wyłącznie na początku ciągu znaków. Jeśli wzorzec nie znajduje się na pozycji 0, funkcja zwraca None, nawet jeśli wzorzec występuje później.
import re
print(re.match("\d+", "42 items")) # matches "42"
print(re.match("\d+", "items 42")) # Nonesearch a match
Najważniejsza różnica:
match— wzorzec musi zaczynać się na indeksie 0search— wzorzec może wystąpić w dowolnym miejscu
Najczęściej potrzebna jest funkcja search. Funkcji match należy używać tylko wtedy, gdy potrzebne jest sprawdzenie prefiksu.
re.findall — pobieranie wszystkich dopasowań
re.findall zwraca listę wszystkich nienakładających się dopasowań w postaci ciągów znaków, a nie obiektów Match. Jest idealna do zadań związanych z wyodrębnianiem danych.
import re
emails = re.findall("\w+@\w+\.\w+", "a@x.com and b@y.org")
print(emails) # ["a@x.com", "b@y.org"]findall z grupami
Jeśli wzorzec zawiera grupy przechwytujące, findall zwraca przechwycone fragmenty zamiast całego dopasowania — jest to częste źródło zaskoczenia.
Każda krotka zawiera tutaj numer kierunkowy i pozostałą część numeru.
import re
print(re.findall("(\d{3})-(\d{4})", "555-1234 and 999-8765"))
# [("555", "1234"), ("999", "8765")]re.finditer — obiekty Match
Gdy potrzebne są pozycje lub grupy dla każdego dopasowania, należy użyć re.finditer. Funkcja zwraca obiekty Match, po których można iterować leniwie.
import re
for m in re.finditer("\d+", "a1 b22 c333"):
print(m.group(), "at", m.start())re.sub — wyszukiwanie i zastępowanie
re.sub(pattern, replacement, text) zastępuje każde dopasowanie ciągiem zastępczym i zwraca nowy ciąg znaków.
To podstawa czyszczenia tekstu — maskowania, normalizacji i usuwania.
import re
clean = re.sub("\d+", "#", "Room 101 and 202")
print(clean) # "Room # and #"sub z odwołaniami wstecznymi i funkcjami
Zastępowanie może odwoływać się do przechwyconych grup za pomocą \1 albo może być funkcją implementującą dynamiczną logikę.
import re
# Swap "first last" -> "last, first"
print(re.sub("(\w+) (\w+)", "\\2, \\1", "Ada Lovelace"))
# Function replacement: double each number
print(re.sub("\d+", lambda m: str(int(m.group()) * 2), "a1 b2"))re.compile — ponowne używanie wzorców
Gdy wzorzec jest używany wielokrotnie (na przykład w pętli), re.compile tworzy go raz jako obiekt wzorca, którego można ponownie używać. Jest to szybsze i poprawia czytelność kodu.
import re
num = re.compile("\d+")
for line in ["a1", "b22", "c333"]:
print(num.findall(line))Przydatne flagi
Flagi zmieniają sposób dopasowywania:
re.IGNORECASE— bez rozróżniania wielkości literre.MULTILINE—^/$dopasowują początek i koniec każdego wierszare.DOTALL—.dopasowuje również znaki nowego wiersza
import re
print(re.findall("cat", "Cat CAT cat", re.IGNORECASE))
# ["Cat", "CAT", "cat"]Szybki test: search a findall
Potrzebna jest lista wszystkich numerów telefonów występujących w dowolnym miejscu dokumentu.
Podsumowanie: moduł re
Można już korzystać z podstawowych funkcji wyrażeń regularnych:
re.search— pierwsze dopasowanie w dowolnym miejscu (obiekt Match)re.match— dopasowanie tylko na początkure.findall— lista wszystkich dopasowań (grupy zmieniają wynik)re.finditer— obiekty Match wraz z pozycjamire.sub— zastępowanie dopasowań za pomocą odwołań wstecznych lub funkcjire.compilei flagi do ponownego używania wzorców oraz sterowania ich działaniem
Następnie: grupy przechwytujące i grupy nazwane.
Często zadawane pytania
Czy lekcja „Moduł re: search, match, findall, sub” jest bezpłatna?
Tak — pełny tekst „Moduł re: search, match, findall, sub” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Moduł re: search, match, findall, sub”?
re.search(), re.match(), re.findall(), re.sub(), re.compile() na potrzeby wydajności. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Moduł re: search, match, findall, sub”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wzorce wyrażeń regularnych i klasy znaków
- Moduł re: search, match, findall, sub
- Grupy przechwytujące i nazwane
- Czyszczenie tekstu na potrzeby AI za pomocą wyrażeń regularnych