0Pricing
Ruby Academy · Lezione

Literals delle espressioni regolari

Basi dei pattern

Literals delle espressioni regolari è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 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.

Che cos'è un'espressione regolare?

Una espressione regolare (regex) è un modello usato per trovare corrispondenze nel testo. In Ruby, una regex è un oggetto di prima classe della classe Regexp.

Le regex servono per cercare, convalidare ed estrarre parti di stringhe.

  • Trovare una parola, una cifra o un simbolo
  • Convalidare indirizzi email e numeri di telefono
  • Estrarre parti da testo non strutturato
pattern = /hello/
puts pattern.class
puts(pattern.match?('hello world'))

Letterali regex con barre

Il modo più comune di scrivere una regex in Ruby consiste nell'inserirla tra due barre: /pattern/.

Si parla di regex letterale. Tutto ciò che si trova tra le barre costituisce il modello.

ruby = /ruby/
puts ruby.class
puts(ruby.match?('I love ruby'))
puts(ruby.match?('I love python'))

L'operatore di corrispondenza =~

L'operatore =~ verifica una stringa rispetto a una regex. Restituisce l'indice della prima corrispondenza oppure nil se non viene trovata alcuna corrispondenza.

puts('hello world' =~ /world/)
puts(('hello world' =~ /xyz/).inspect)

match? per una risposta booleana

Quando serve soltanto una risposta sì/no, si usa match?. Restituisce true o false ed è più veloce perché non crea un oggetto MatchData.

puts(/\d/.match?('abc123'))
puts(/\d/.match?('abcdef'))

Classi di caratteri

Una classe di caratteri tra parentesi quadre corrisponde a un singolo carattere qualsiasi appartenente a un insieme.

  • [abc] corrisponde a, b oppure c
  • [a-z] corrisponde a una qualsiasi lettera minuscola
  • [0-9] corrisponde a una qualsiasi cifra
puts(/[aeiou]/.match?('sky'))
puts(/[aeiou]/.match?('tree'))
puts(/[0-9]/.match?('room 7'))

Classi abbreviate

Ruby fornisce sequenze di escape abbreviate per le classi di caratteri più comuni:

  • \d indica una cifra, \D un carattere non numerico
  • \w indica un carattere alfanumerico (lettere, cifre, underscore)
  • \s indica uno spazio bianco, \S un carattere diverso da uno spazio bianco
puts(/\d\d/.match?('age 42'))
puts(/\w+/.match?('hello_99'))
puts(/\s/.match?('no_space'))

Il punto e i quantificatori

Il punto . corrisponde a un singolo carattere qualsiasi (tranne il carattere di nuova riga). I quantificatori controllano la ripetizione:

  • * zero o più volte
  • + una o più volte
  • ? zero o una volta
  • {2,4} da 2 a 4 volte
puts(/ab+c/.match?('abbbc'))
puts(/colou?r/.match?('color'))
puts(/\d{3}/.match?('id 451'))

Alternanza con la barra verticale

La barra verticale | significa OR. Il modello cat|dog corrisponde a una delle due parole.

Si usano le parentesi per raggruppare un'alternanza all'interno di un modello più ampio.

pet = /cat|dog/
puts(pet.match?('I have a dog'))
puts(pet.match?('I have a fish'))
puts(/^(yes|no)$/.match?('yes'))

Flag senza distinzione tra maiuscole e minuscole

Si aggiunge il flag i dopo la barra di chiusura per rendere la corrispondenza insensibile alle maiuscole e alle minuscole.

Altri flag utili sono m (il punto corrisponde anche a una nuova riga) e x (modalità estesa, ignora gli spazi bianchi).

puts(/ruby/i.match?('I love RUBY'))
puts(/ruby/.match?('I love RUBY'))

Creare regex da stringhe

È possibile creare una regex durante l'esecuzione con Regexp.new. Si usa Regexp.escape per includere in modo sicuro input dell'utente che potrebbe contenere caratteri speciali.

word = 'price'
pattern = Regexp.new(word)
puts(pattern.match?('the price is high'))
puts(Regexp.escape('a.b*c'))

Anteprima degli ancoraggi

Gli ancoraggi corrispondono a posizioni, non a caratteri:

  • ^ inizio di una riga
  • $ fine di una riga
  • \A inizio della stringa
  • \z fine della stringa

Questi elementi saranno studiati in dettaglio più avanti.

puts(/^Hello/.match?('Hello there'))
puts(/world$/.match?('hello world'))

Verifica rapida

Che cosa restituisce l'operatore =~ quando una regex trova una corrispondenza in una stringa?

Riepilogo: letterali regex

Ha appreso le basi delle regex in Ruby:

  • I letterali regex vengono scritti tra /slashes/
  • =~ restituisce un indice, mentre match? restituisce true/false
  • Le classi di caratteri [ ] e le forme abbreviate \d \w \s
  • I quantificatori * + ? {n,m} e l'alternanza |
  • Il flag i rende la corrispondenza insensibile alle maiuscole e alle minuscole

Successivamente imparerà a catturare le parti corrispondenti.

puts(/\w+@\w+\.\w+/i.match?('USER@Mail.com'))

Domande Frequenti

La lezione «Literals delle espressioni regolari» è gratuita?

Sì — il testo completo di «Literals delle espressioni regolari» è 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 «Literals delle espressioni regolari»?

Basi dei pattern 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 1 di 4.

Quanto tempo richiede la lezione «Literals delle espressioni regolari»?

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