Cercare una Stringa in un'altra
Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina
Questo e’ il compito per cui sono state inventate le espressioni regolari, o Regexp.
Usare le Regexp e’ semplice, ma puo’ diventare molto complicato se si usano le loro caratteristiche piu’ potenti.
Le espressioni regolari sono un argomento molto complesso, non sono completamente spiegate in questa pagina. Il nostro scopo e’ solo di individuare delle sottostringhe.
In generale, una regexp si crea in questo modo:>> rgx= /espressione/ => /espressione/o usando esplicitamente il costruttore della classe
Regexp:
>> rgx= Regexp.new "espressione" => /espressione/per verificare che una stringa sia contenuta in un altra si puo’ usare l’operatore
=~:
>> 'la mia espressione' =~ rgx => 7 >> 'bau' =~ rgx => nilCome vedete, l’operatore restituisce l’indice della stringa dove ha inizio l’espressione rappresentata dalla
Regexp, oppure nil. Dunque possiamo scrivere cose del genere:
>> if 'ciao'=~ /a/ >> p 'trovata una a' >> endPossiamo usare le
Regexp anche in un modo piu’ “ad oggetti”:
>> /a/.match 'ciao' => #<MatchData:0x27c9b90> >> /a/.match 'cio' => nilQuel
MatchData e’ un oggetto speciale, che contiene al suo interno i valori trovati dal’espressione. Se non viene trovato nulla, appare un nil, di nuovo, quindi vale la considerazione fatta prima.
ancora sui confronti: le Regexp posseggono anche un operatore === che viene usato nei confronti case:
>> case 'ciao' >> when /k/ >> puts 'trovata k' >> when /z/ >> puts 'trovata z' >> when /a/ >> puts 'trovata a' >> end trovata a => nil