0Pricing
Python Academy · Lezione

re.sub, flag e pattern compilati

Sostituisca testo, utilizzi flag come IGNORECASE e compili pattern da riutilizzare.

re.sub, flag e pattern compilati è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

Introduzione

re.sub sostituisce le corrispondenze. I flag modificano il comportamento della corrispondenza. I pattern compilati sono efficienti per gli usi ripetuti.

re.sub di base

re.sub(pattern, repl, string) sostituisce tutte le corrispondenze con repl. Il quarto argomento count= limita il numero di sostituzioni.
import re
result = re.sub(r'\d+', 'X', 'abc 123 def 456')
print(result)

re.sub con i gruppi

Utilizzi \1, \2 o \g<1> nella sostituzione per inserire i gruppi catturati. Utilizzi \g per i gruppi con nome.
import re
# Swap first and last name
result = re.sub(r'(\w+),\s*(\w+)', r'\2 \1', 'Smith, John')
print(result)

re.sub con una funzione

La sostituzione può essere un callable: f(match) → stringa di sostituzione. Ciò consente trasformazioni complesse.
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)

Rende il pattern insensibile alle maiuscole e alle minuscole. r'hello' con re.I corrisponde a 'HELLO', 'Hello' e così via.
import re
print(re.findall(r'hello', 'Hello HELLO hello', re.I))

re.MULTILINE (re.M)

Fa sì che ^ e $ corrispondano all'inizio e alla fine di ogni RIGA anziché dell'intera stringa.
import re
text = 'first\nsecond\nthird'
print(re.findall(r'^\w+', text, re.M))

re.DOTALL (re.S)

Fa sì che . corrisponda anche ai caratteri di nuova riga. Senza questo flag, . si ferma ai confini di riga.
import re
text = 'line1\nline2'
print(re.search(r'line1.line2', text, re.S).group())

re.VERBOSE (re.X)

Consente di inserire commenti e spazi bianchi nel pattern per migliorarne la leggibilità. Gli spazi vengono ignorati; utilizzi \ + spazio per uno spazio letterale.
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())

Combinazione dei flag

Combini i flag con |: re.I | re.M. In alternativa, utilizzi i flag inline (?im) all'inizio del pattern.
import re
print(re.findall(r'^\w+', 'Hello\nWorld', re.I | re.M))

re.compile per le prestazioni

Compili un pattern una volta con re.compile(). Chiami i metodi sull'oggetto compilato: 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) esegue l'escape di tutti i caratteri speciali delle regex in una stringa, che può quindi essere utilizzata come pattern letterale.
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)))

Controllo rapido

Quale flag fa sì che . corrisponda ai caratteri di nuova riga nelle regex Python?

Riepilogo

re.sub: sostituzione con una stringa, gruppi o una funzione. Flag: re.I (maiuscole/minuscole), re.M (multilinea ^/$), re.S (il punto corrisponde a \n), re.X (verboso). Compili per riutilizzare il pattern.

Continui

Ottimo lavoro! La lezione successiva La aspetta.

Domande Frequenti

La lezione «re.sub, flag e pattern compilati» è gratuita?

Sì — il testo completo di «re.sub, flag e pattern compilati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «re.sub, flag e pattern compilati»?

Sostituisca testo, utilizzi flag come IGNORECASE e compili pattern da riutilizzare. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «re.sub, flag e pattern compilati»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Fondamenti delle espressioni regolari
  2. Utilizzo di re.match, re.search, re.findall
  3. Gruppi e catture con nome
  4. re.sub, flag e pattern compilati
← Torna a Python Academy