Gruppi denominati e ancoraggi
Espressioni regolari avanzate
Gruppi denominati e ancoraggi è una lezione Ruby 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 Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Perché usare gruppi denominati?
Le catture numerate come m[1] diventano difficili da leggere quando il modello cresce. I gruppi denominati assegnano a ogni cattura un'etichetta significativa.
Sintassi: (?<name>pattern).
m = /(?<year>\d{4})-(?<month>\d{2})/.match('2026-05')
puts(m[:year])
puts(m[:month])Accedere alle catture denominate
È possibile accedere alle catture denominate con una chiave Symbol o String: m[:name]. Il metodo named_captures le restituisce tutte in un Hash.
m = /(?<user>\w+)@(?<host>\w+)/.match('alice@mail')
p m.named_capturesGruppi denominati con =~
Quando un letterale regex con gruppi denominati si trova a sinistra di =~, Ruby crea automaticamente variabili locali per ogni nome.
if /(?<word>\w+)/ =~ 'hello'
puts word
endAncoraggi: inizio e fine
Gli ancoraggi corrispondono a posizioni anziché a caratteri:
^inizio di una riga$fine di una riga
Sono fondamentali per verificare che corrisponda l'intero input.
puts(/^abc/.match?('abcdef'))
puts(/def$/.match?('abcdef'))
puts(/^abc$/.match?('abcdef'))Ancoraggi della stringa \A e \z
^ e $ corrispondono ai limiti delle righe, un aspetto importante per le stringhe multilinea. Per l'intera stringa, è preferibile usare \A (inizio) e \z (fine assoluta).
text = "first\nsecond"
puts(/^second/.match?(text))
puts(/\Asecond/.match?(text))Convalidare l'intero input
Per verificare che un'intera stringa corrisponda a un formato, si ancorano entrambe le estremità. In questo modo vengono rifiutate le stringhe con caratteri aggiuntivi.
zip = /\A\d{5}\z/
puts(zip.match?('34000'))
puts(zip.match?('34000x'))Confini delle parole
\b è un confine di parola: la posizione tra un carattere alfanumerico e un carattere non alfanumerico. Trova parole intere senza consumare caratteri.
puts('cat catalog'.scan(/\bcat\b/).length)
puts('cat catalog'.scan(/cat/).length)Lookahead
Un lookahead positivo (?=...) verifica ciò che segue senza includerlo nella corrispondenza. Il lookahead negativo è (?!...).
puts('100 dollars'.match(/\d+(?= dollars)/)[0])
puts('apple pie'.match?(/apple(?! juice)/))Lookbehind
Un lookbehind (?<=...) verifica ciò che precede la corrispondenza. Il lookbehind negativo è (?<!...).
m = '$42'.match(/(?<=\$)\d+/)
puts(m[0])Gruppi non catturanti
A volte servono i gruppi per l'alternanza o i quantificatori, ma non si desidera creare una cattura. Si usa (?:...) per un gruppo non catturante.
m = /(?:Mr|Ms)\. (\w+)/.match('Ms. Lee')
p m.capturesUnire tutti gli elementi
Un convalidatore realistico usa insieme ancoraggi, gruppi denominati e quantificatori.
re = /\A(?<area>\d{3})-(?<num>\d{4})\z/
m = re.match('555-1234')
puts(m[:area])
puts(m[:num])Verifica rapida
Quali ancoraggi è necessario usare per assicurarsi che corrisponda l'intera stringa, ignorando le interruzioni di riga?
Riepilogo: gruppi denominati e ancoraggi
Ha acquisito familiarità con strumenti regex avanzati:
- Gruppi denominati
(?<name>...)enamed_captures - Ancoraggi
^ $ \A \z \b - Lookahead
(?=)/(?!)e lookbehind(?<=)/(?<!) - Gruppi non catturanti
(?:...)
puts(/\A(?<id>\d+)\z/.match('42')[:id])Domande Frequenti
La lezione «Gruppi denominati e ancoraggi» è gratuita?
Sì — il testo completo di «Gruppi denominati e ancoraggi» è 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 Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Gruppi denominati e ancoraggi»?
Espressioni regolari avanzate Eserciti Ruby 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 Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby 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 «Gruppi denominati e ancoraggi»?
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 Ruby Academy?
Sì. Ogni lezione Ruby 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
- Literals delle espressioni regolari
- Corrispondenza e cattura
- Sostituzione
- Gruppi denominati e ancoraggi