0Pricing
Learn AI with Python · Lekcja

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 first

re.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())   # 6

re.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"))    # None

search a match

Najważniejsza różnica:

  • match — wzorzec musi zaczynać się na indeksie 0
  • search — 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 liter
  • re.MULTILINE — ^/$ dopasowują początek i koniec każdego wiersza
  • re.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ątku
  • re.findall — lista wszystkich dopasowań (grupy zmieniają wynik)
  • re.finditer — obiekty Match wraz z pozycjami
  • re.sub — zastępowanie dopasowań za pomocą odwołań wstecznych lub funkcji
  • re.compile i 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

  1. Wzorce wyrażeń regularnych i klasy znaków
  2. Moduł re: search, match, findall, sub
  3. Grupy przechwytujące i nazwane
  4. Czyszczenie tekstu na potrzeby AI za pomocą wyrażeń regularnych
← Powrót do Learn AI with Python