Note: Testo rimosso dalla rev 3  e Testo aggiunto nella rev4

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 Regexppre>:
 >> rgx= Regexp.new "espressione" 
 => /espressione/
</pre>
per verificare che una stringa sia contenuta in un altra si puo'puo’ usare l'operatorel’operatore @=~@:=~: <pre>
 >> 'la'la mia espressione' =~ rgx
 => 7
 >> 'bau' =~ rgx
 => nil
</pre>

Come vedete, lespressione' =~ rgx
 => 7
 >> 'operatore restituisce lbau'indice =~ dellargx
 => nil
Come vedete, l’operatore restituisce l’indice della stringa dove ha inizio l'espressionel’espressione rappresentata dalla @Regexp@,Regexp, oppure @nil@.nil. Dunque possiamo scrivere cose del genere: <pre>
 >> if 'ciao'=~ /a/
 >>  p ciao'=~ /a/
 >>  p 'trovata una a'
 >> end
</pre>
Possiamo usare le @Regexp@Regexp anche in un modo piu
'piu’ "ad“ad oggetti":oggetti”: <pre>
 >> /a/.match 'ciao'
 => #<MatchData:0x27c9b90>
 >> /a/.match 'cio'
 => nil
</pre>
Quel @MatchData@MatchData e'e’ un oggetto speciale, che contiene al suo interno i valori trovati dal'espressione.dal’espressione. Se non viene trovato nulla, appare un @nil@,nil, di nuovo, quindi vale la considerazione fatta prima. ancora sui confronti: le @Regexp@Regexp posseggono anche un operatore @===@=== che viene usato nei confronti @case@:case: <pre>
 >> case 'ciao'
 >>  when 'ciao'
 >>  when /k/
 >>   puts 'trovata k'
 >>  when /z/
 >>   puts 'trovata z'
 >>  when /a/
 >>   puts 'trovata a'
 >> end
 trovata a
 => nil
</pre>
</pre

	

o usando esplicitamente il costruttore della classe Regexp:

Created on November 25, 2005 13:56 by Ruby Fan (127.0.0.1)