0Pricing
Ruby Academy · Lezione

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_captures

Gruppi 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
end

Ancoraggi: 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.captures

Unire 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>...) e named_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

  1. Literals delle espressioni regolari
  2. Corrispondenza e cattura
  3. Sostituzione
  4. Gruppi denominati e ancoraggi
← Torna a Ruby Academy