Fangstgrupper og navngitte grupper
Parenteser for fangst, navngitte grupper med (?P ...), re.fullmatch() og lookahead/lookbehind.
Fangstgrupper og navngitte grupper er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hvorfor bruke grupper?
Grupper gjør det mulig å isolere deler av et treff, slik at akkurat den ønskede delen kan hentes ut — retningsnummeret fra et telefonnummer, året fra en dato eller brukernavnet fra en e-postadresse.
Denne leksjonen dekker fangende, navngitte og ikke-fangende grupper, samt lookaround-uttrykk.
Fangende grupper med ( )
Sett parenteser rundt en del av et mønster for å fange den. Hele treffet og hver gruppe blir tilgjengelige i Match-objektet.
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
Nyttige tilgangsmetoder:
m.group(0)— hele treffetm.group(n)— den n-te fangstenm.groups()— en tuppel med alle fangstene
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()Navngitte grupper med (?P<name>...)
Nummerering av grupper blir fort sårbar. Navngitte grupper bruker (?P<name>...), slik at fangster kan refereres til med et meningsfullt navn.
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 for strukturert resultat
m.groupdict() returnerer alle navngitte grupper som en ordbok — perfekt for å gjøre matchet tekst om til strukturerte poster.
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"}Ikke-fangende grupper (?:...)
Noen ganger trengs parenteser bare for gruppering (for eksempel for å bruke en kvantor), men det er IKKE ønskelig å fange innholdet. Bruk (?:...).
Da holdes gruppenumrene ryddige.
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"Bakreferanser
En bakreferanse \1 samsvarer med den samme teksten som en gruppe fanget tidligere. Dette er nyttig for å finne gjentatte ord.
import re
# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]Lookahead (?=...)
En positiv lookahead (?=...) sjekker hva som må følge, uten å forbruke det. Den bekreftede teksten blir ikke en del av treffet.
Her matcher vi et tall bare dersom det etterfølges av "px".
import re
print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"] -> "20" skipped (not followed by px)Negativ lookahead (?!...)
En negativ lookahead (?!...) sjekker hva som ikke må følge. Match tallet bare dersom det ikke etterfølges av "px".
import re
print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by pxLookbehind (?<=...) og (?<!...)
Lookbehind sjekker hva som kommer før treffet, uten å forbruke det:
(?<=...)positiv — må innledes av(?<!...)negativ — må ikke innledes av
Her henter vi ut beløp som innledes av et dollartegn, uten å fange opp tegnet.
import re
print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"] -> only the amount after $Kombinere grupper og lookaround-uttrykk
Reelle ekstraktorer kombinerer disse verktøyene. Dette mønsteret henter ut en navngitt pris som må innledes av et valutasymbol og etterfølges av en desimaldel:
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 99Hurtigsjekk: Navngitte grupper
Du vil hente ut treff med et lesbart navn som "year" i stedet for et tall.
Oppsummering: Grupper og lookaround-uttrykk
Du kan nå hente ut presis struktur fra tekst:
( )fangstgrupper medm.group(n)ogm.groups()(?P<name>...)navngitte grupper medm.groupdict()(?:...)grupper som ikke fanger opp tekst, for ryddig gruppering- Tilbakehenvisninger med
\1for gjentakelser - Lookahead
(?=)/(?!)og lookbehind(?<=)/(?<!)
Neste trinn: sette alt sammen for å rense tekst for AI.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Fangstgrupper og navngitte grupper» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Fangstgrupper og navngitte grupper», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Fangstgrupper og navngitte grupper»?
Parenteser for fangst, navngitte grupper med (?P ...), re.fullmatch() og lookahead/lookbehind. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Fangstgrupper og navngitte grupper»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Regex-mønstre og tegnklasser
- re-modulen: search, match, findall, sub
- Fangstgrupper og navngitte grupper
- Tekstrensing for KI med regex