Python Academy · Lektion

re.sub, flaggor och kompilerade mönster

Ersätt text, använd flaggor som IGNORECASE och kompilera mönster för återanvändning.

Lektion 4 av 414 steg

re.sub, flaggor och kompilerade mönster är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Introduktion

re.sub ersätter matchningar. Flaggor ändrar matchningsbeteendet. Kompilerade mönster är effektiva vid upprepad användning.

re.sub – grunderna

re.sub(pattern, repl, string) ersätter alla matchningar med repl. Det fjärde argumentet count= begränsar antalet ersättningar.
import re
result = re.sub(r'\d+', 'X', 'abc 123 def 456')
print(result)

re.sub med grupper

Använd \1, \2 eller \g<1> i ersättningen för att infoga fångade grupper. Använd \g för namngivna grupper.
import re
# Swap first and last name
result = re.sub(r'(\w+),\s*(\w+)', r'\2 \1', 'Smith, John')
print(result)

re.sub med funktion

Ersättningen kan vara ett anropbart objekt: f(match) → ersättningssträng. Det möjliggör komplexa omvandlingar.
import re
def double_num(m): return str(int(m.group())*2)
result = re.sub(r'\d+', double_num, '1 cats and 2 dogs')
print(result)

re.IGNORECASE (re.I)

Gör mönstret okänsligt för skiftläge. r'hello' med re.I matchar 'HELLO', 'Hello' och så vidare.
import re
print(re.findall(r'hello', 'Hello HELLO hello', re.I))

re.MULTILINE (re.M)

Gör att ^ och $ matchar början/slutet av varje RAD i stället för hela strängen.
import re
text = 'first\nsecond\nthird'
print(re.findall(r'^\w+', text, re.M))

re.DOTALL (re.S)

Gör att . även matchar radbrytningar. Utan flaggan stannar . vid radgränser.
import re
text = 'line1\nline2'
print(re.search(r'line1.line2', text, re.S).group())

re.VERBOSE (re.X)

Tillåter kommentarer och blanksteg i mönstret för bättre läsbarhet. Blanksteg ignoreras; använd \ + blanksteg för ett bokstavligt blanksteg.
import re
pattern = re.compile(r'''
    (?P<year>\d{4})   # year
    -
    (?P<month>\d{2}) # month
    -
    (?P<day>\d{2})   # day
''', re.X)
print(pattern.search('2024-01-15').groupdict())

Kombinera flaggor

Kombinera flaggor med |: re.I | re.M. Du kan också använda infogade flaggor (?im) i början av mönstret.
import re
print(re.findall(r'^\w+', 'Hello\nWorld', re.I | re.M))

re.compile för prestanda

Kompilera ett mönster en gång med re.compile(). Anropa metoder på det kompilerade objektet: pat.search(), pat.findall().
import re
email_re = re.compile(r'[\w.+-]+@[\w-]+\.[\w.]+')
emails = ['user@example.com', 'invalid', 'test@test.org']
print([e for e in emails if email_re.fullmatch(e)])

re.escape()

re.escape(string) escapear alla särskilda regextecken i en sträng, så att den kan användas som ett bokstavligt mönster.
import re
user_input = 'price.is $10+'
pattern = re.compile(re.escape(user_input))
text = 'The price.is $10+ today'
print(bool(pattern.search(text)))

Snabbkontroll

Vilken flagga gör att . matchar radbrytningar i Python-regex?

Sammanfattning

re.sub: ersätt med en sträng, grupper eller en funktion. Flaggor: re.I (skiftläge), re.M (flera rader ^/$), re.S (punkten matchar \n), re.X (utförligt). Kompilera för återanvändning.

Fortsätt

Bra jobbat! Nästa lektion väntar.
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”re.sub, flaggor och kompilerade mönster” gratis?

Ja – hela texten till ”re.sub, flaggor och kompilerade mönster” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”re.sub, flaggor och kompilerade mönster”?

Ersätt text, använd flaggor som IGNORECASE och kompilera mönster för återanvändning. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”re.sub, flaggor och kompilerade mönster”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Grunderna i reguljära uttryck
  2. Använda re.match, re.search och re.findall
  3. Grupper och namngivna fångster
  4. re.sub, flaggor och kompilerade mönster
← Tillbaka till Python Academy