0Pricing
Learn AI with Python · Lekcja

Grupy przechwytujące i nazwane

Nawiasy do przechwytywania, nazwane grupy (?P ...), re.fullmatch(), lookahead/lookbehind.

Grupy przechwytujące i nazwane to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 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.

Po co grupy

Grupy pozwalają wyodrębnić części dopasowania, dzięki czemu można pobrać dokładnie potrzebny fragment — numer kierunkowy z numeru telefonu, rok z daty lub nazwę użytkownika z adresu e-mail.

W tej lekcji omówiono grupy przechwytujące, nazwane i nieprzechwytujące oraz konstrukcje lookaround.

Grupy przechwytujące za pomocą ( )

Aby przechwycić część wzorca, należy ująć ją w nawiasy. Całe dopasowanie oraz każda grupa stają się dostępne w obiekcie Match.

import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group())    # "2026-05-29" (whole match)
print(m.group(1))   # "2026"
print(m.group(2))   # "05"

match.group, groups, groupdict

Przydatne akcesory:

  • m.group(0) — całe dopasowanie
  • m.group(n) — n-te przechwycenie
  • m.groups() — krotka wszystkich przechwyceń
import re

m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups())   # ("2026", "05", "29")
year, month, day = m.groups()

Grupy nazwane za pomocą (?P<name>...)

Numerowanie grup szybko staje się podatne na błędy. Grupy nazwane używają zapisu (?P<name>...), dzięki czemu do przechwyconych fragmentów można odwoływać się za pomocą znaczącej nazwy.

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year"))   # "2026"
print(m.group("month"))  # "05"

groupdict dla uporządkowanego wyniku

m.groupdict() zwraca wszystkie grupy nazwane jako słownik — idealnie nadaje się do przekształcania dopasowanego tekstu w uporządkowane rekordy.

import re

m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}

Grupy nieprzechwytujące (?:...)

Czasami nawiasy są potrzebne wyłącznie do grupowania (na przykład w celu zastosowania kwantyfikatora), ale przechwytywanie NIE jest potrzebne. Należy użyć (?:...).

Dzięki temu numeracja grup pozostaje przejrzysta.

import re

# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1))   # "42" -> group 1 is the digits, not "ab"

Odwołania wsteczne

Odwołanie wsteczne \1 dopasowuje ten sam tekst, który wcześniej przechwyciła grupa. Jest przydatne do znajdowania powtarzających się słów.

import re

# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]

Asercja wyprzedzająca (?=...)

Pozytywna asercja wyprzedzająca (?=...) sprawdza, co musi wystąpić dalej, ale nie zużywa tego fragmentu. Sprawdzany tekst nie jest częścią dopasowania.

W tym przypadku dopasowujemy liczbę tylko wtedy, gdy występuje po niej „px”.

import re

print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"]  -> "20" skipped (not followed by px)

Negatywna asercja wyprzedzająca (?!...)

Negatywna asercja wyprzedzająca (?!...) sprawdza, co nie może wystąpić dalej. Dopasowujemy liczbę tylko wtedy, gdy nie występuje po niej „px”.

import re

print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by px

Asercja wsteczna (?<=...) i (?<!...)

Asercja wsteczna sprawdza, co występuje przed dopasowaniem, ale nie zużywa tego fragmentu:

  • (?<=...) pozytywna — musi być poprzedzona przez
  • (?<!...) negatywna — nie może być poprzedzona przez

W tym przypadku pobieramy kwoty poprzedzone znakiem dolara, nie przechwytując tego znaku.

import re

print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"]  -> only the amount after $

Łączenie grup i asercji

W praktycznych ekstraktorach łączy się te narzędzia. Ten wzorzec pobiera nazwaną cenę, która musi być poprzedzona symbolem waluty i po której musi występować część dziesiętna:

import re

text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents"))   # 1299 99

Szybkie sprawdzenie: grupy nazwane

Celem jest wyodrębnianie dopasowań za pomocą czytelnej nazwy, takiej jak „year”, zamiast numeru.

Podsumowanie: grupy i asercje

Można teraz wyodrębniać z tekstu dokładną strukturę:

  • ( ) grupy przechwytujące z użyciem m.group(n) i m.groups()
  • (?P<name>...) grupy nazwane z użyciem m.groupdict()
  • (?:...) grupy nieprzechwytujące do przejrzystego grupowania
  • Odwołania wsteczne \1 do powtórzeń
  • Asercje wyprzedzające (?=)/(?!) i asercje wsteczne (?<=)/(?<!)

Następnie połączymy wszystko, aby przygotować tekst dla AI.

Często zadawane pytania

Czy lekcja „Grupy przechwytujące i nazwane” jest bezpłatna?

Tak — pełny tekst „Grupy przechwytujące i nazwane” 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 „Grupy przechwytujące i nazwane”?

Nawiasy do przechwytywania, nazwane grupy (?P ...), re.fullmatch(), lookahead/lookbehind. Ć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 3 z 4.

Ile czasu zajmuje lekcja „Grupy przechwytujące i nazwane”?

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