Corrispondenza e cattura
match e catture
Corrispondenza e cattura è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 2 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.
Oggetti MatchData
Quando si chiama regex.match(string), Ruby restituisce un oggetto MatchData in caso di successo oppure nil in caso di errore.
MatchData contiene il testo corrispondente e gli eventuali gruppi catturati.
m = /world/.match('hello world')
puts m.class
puts(m[0])La corrispondenza completa: indice 0
L'indice 0 di un MatchData contiene sempre la sottostringa corrispondente completa, indipendentemente dai gruppi presenti.
m = /\d+/.match('order 4521 shipped')
puts(m[0])
puts(m.to_s)Gruppi di cattura
Le parentesi ( ) creano gruppi di cattura. È possibile accedere a ogni gruppo tramite il relativo numero, a partire da 1.
m = /(\d{4})-(\d{2})/.match('2026-05')
puts(m[1])
puts(m[2])Il metodo captures
captures restituisce un array di tutti i gruppi catturati, escludendo la corrispondenza completa all'indice 0.
m = /(\w+)@(\w+)/.match('alice@example')
p m.capturesDestrutturare le catture
Poiché captures restituisce un array, è possibile destrutturare direttamente il risultato in variabili.
user, host = /(\w+)@(\w+)/.match('bob@server').captures
puts user
puts hostCorrispondenza precedente e successiva
MatchData offre metodi di supporto per il testo intorno alla corrispondenza:
pre_matchla parte precedentepost_matchla parte successiva
m = /\d+/.match('abc123xyz')
puts(m.pre_match)
puts(m.post_match)scan per tutte le corrispondenze
String#scan restituisce un array di tutte le corrispondenze presenti nella stringa, non soltanto della prima.
nums = '12 cats, 8 dogs, 3 birds'.scan(/\d+/)
p numsscan con i gruppi
Se il modello contiene gruppi, scan restituisce un array di array, uno per ogni corrispondenza, ciascuno contenente le catture di quella corrispondenza.
pairs = 'a=1 b=2 c=3'.scan(/(\w)=(\d)/)
p pairsGestire nil in modo sicuro
È importante ricordare che match restituisce nil quando non viene trovata alcuna corrispondenza. È necessario verificarlo prima di usare il risultato.
m = /(\d+)/.match('no digits here')
if m
puts m[1]
else
puts 'no match found'
endVariabili speciali
Dopo una corrispondenza riuscita, Ruby imposta variabili globali: $~ contiene il MatchData, mentre $1 e $2 contengono le catture numerate.
Sono utili negli script brevi, ma nel codice reale MatchData esplicito è più chiaro.
if 'name: Alice' =~ /name: (\w+)/
puts $1
endEstrarre una data
È possibile combinare gruppi e catture per estrarre dati strutturati da una stringa in un unico passaggio.
year, month, day = /(\d{4})-(\d{2})-(\d{2})/.match('2026-05-29').captures
puts "Year #{year}, Month #{month}, Day #{day}"Verifica rapida
Dato 'a=1 b=2'.scan(/(\w)=(\d)/), quale forma ha il risultato?
Riepilogo: corrispondenza e cattura
Ora è possibile estrarre dati dalle corrispondenze:
matchrestituisce MatchData o nil- L'indice 0 contiene la corrispondenza completa, gli indici da 1 in poi i gruppi
capturesrestituisce tutti i gruppi in un arrayscantrova tutte le corrispondenze nella stringa- È sempre necessario gestire
nil
p 'x1 y2 z3'.scan(/([a-z])(\d)/)Domande Frequenti
La lezione «Corrispondenza e cattura» è gratuita?
Sì — il testo completo di «Corrispondenza e cattura» è 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 «Corrispondenza e cattura»?
match e catture 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 2 di 4.
Quanto tempo richiede la lezione «Corrispondenza e cattura»?
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