Lær AI med Python · Lektion

re-modulet: search, match, findall, sub

re.search(), re.match(), re.findall(), re.sub(), re.compile() for bedre ydeevne.

Lektion 2 af 413 trin

re-modulet: search, match, findall, sub er en gratis Lær AI med Python-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lær AI med Python, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lær AI med Python-kurset indeholder 4 lektioner i alt.

Modulet re

Python giver adgang til regulære udtryk gennem det indbyggede modul re. Kernefunktionerne er search, match, findall og sub.

At vide, hvilken funktion du skal vælge, er halvdelen af arbejdet.

import re   # always import it first

re.search — Find overalt

re.search(pattern, text) gennemgår hele strengen for det første match og returnerer et Match-objekt eller None, hvis intet matcher.

import re

m = re.search("\d+", "order 42 shipped")
if m:
    print(m.group())   # "42"
    print(m.start())   # 6

re.match — Forankret ved starten

re.match matcher kun ved begyndelsen af strengen. Hvis mønsteret ikke står på position 0, returnerer funktionen None, selv hvis det forekommer senere.

import re

print(re.match("\d+", "42 items"))    # matches "42"
print(re.match("\d+", "items 42"))    # None

search vs match

Den afgørende forskel er:

  • match — mønsteret skal begynde ved indeks 0
  • search — mønsteret kan forekomme overalt

Det meste af tiden vil du bruge search. Brug kun match, når du specifikt har brug for at kontrollere et præfiks.

re.findall — Hent alle match

re.findall returnerer en liste med alle ikke-overlappende match som strenge (ikke Match-objekter). Den er ideel til udtræksopgaver.

import re

emails = re.findall("\w+@\w+\.\w+", "a@x.com and b@y.org")
print(emails)   # ["a@x.com", "b@y.org"]

findall med grupper

Hvis dit mønster har indfangende grupper, returnerer findall de indfangede dele i stedet for hele matchet — en almindelig overraskelse.

Her indeholder hver tupel områdenummeret og resten.

import re

print(re.findall("(\d{3})-(\d{4})", "555-1234 and 999-8765"))
# [("555", "1234"), ("999", "8765")]

re.finditer — Match-objekter

Når du har brug for positioner eller grupper for hvert match, skal du bruge re.finditer. Den leverer Match-objekter, som du kan gennemløbe på en doven måde.

import re

for m in re.finditer("\d+", "a1 b22 c333"):
    print(m.group(), "at", m.start())

re.sub — Søg og erstat

re.sub(pattern, replacement, text) erstatter hvert match med erstatningsstrengen og returnerer en ny streng.

Det er grundlæggende til tekstrensning — maskering, normalisering og fjernelse.

import re

clean = re.sub("\d+", "#", "Room 101 and 202")
print(clean)   # "Room # and #"

sub med bagudreferencer og funktioner

Erstatningen kan referere til indfangede grupper med \1 eller være en funktion til dynamisk 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 — Genbrug mønstre

Når du bruger et mønster mange gange (for eksempel i et gennemløb), opbygger re.compile det én gang til et genanvendeligt mønsterobjekt. Det er hurtigere og giver letlæselig kode.

import re

num = re.compile("\d+")
for line in ["a1", "b22", "c333"]:
    print(num.findall(line))

Nyttige flag

Flag ændrer matchningsadfærden:

  • re.IGNORECASE — skelner ikke mellem store og små bogstaver
  • re.MULTILINE — ^/$ matcher hver linje
  • re.DOTALL — . matcher også linjeskift
import re

print(re.findall("cat", "Cat CAT cat", re.IGNORECASE))
# ["Cat", "CAT", "cat"]

Hurtigt tjek: search vs findall

Du har brug for en liste med hvert telefonnummer, der forekommer et vilkårligt sted i et dokument.

Opsamling: Modulet re

Du kender nu de centrale funktioner til regulære udtryk:

  • re.search — første match overalt (Match-objekt)
  • re.match — matcher kun ved starten
  • re.findall — liste med alle match (grupper ændrer resultatet)
  • re.finditer — Match-objekter med positioner
  • re.sub — erstatter match med bagudreferencer eller en funktion
  • re.compile og flag til genbrug og styring

Næste trin er indfangende grupper og navngivne grupper.

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
53
Lektioner
225

Ofte stillede spørgsmål

Er lektionen “re-modulet: search, match, findall, sub” gratis?

Ja — alle 3 lektioner i læringssporet Lær AI med Python, inklusive “re-modulet: search, match, findall, sub”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lær AI med Python-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “re-modulet: search, match, findall, sub”?

re.search(), re.match(), re.findall(), re.sub(), re.compile() for bedre ydeevne. Du øver dig i Lær AI med Python med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Lær AI med Python?

Der kræves ingen tidligere erfaring. Lær AI med Python på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “re-modulet: search, match, findall, sub”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Lær AI med Python-lektion?

Ja. Alle Lær AI med Python-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Regex-mønstre og tegnklasser
  2. re-modulet: search, match, findall, sub
  3. Fangstgrupper og navngivne grupper
  4. Tekstoprensning til AI med regex
← Tilbage til Lær AI med Python