Note: Testo rimosso dalla rev 2  e Testo aggiunto nella rev3

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/
<pre>
 >> rgx= Regexp.new "espressione" 
 => /espressione/
</pre>


per verificare che una stringa sia contenuta in un altra si puo' usare l'operatore @=~@:
<pre>
 >> 'la mia espressione' =~ rgx
 => 7
 >> 'bau' =~ rgx
 => nil
</pre>


Come vedete, l'operatore restituisce l'indice della stringa dove ha inizio l'espressione rappresentata dalla @Regexp@, oppure @nil@. Dunque possiamo scrivere cose del genere:
<pre>
 >> if 'ciao'=~ /a/
 >>  p 'trovata una a'
 >> end
</pre>


Possiamo usare le @Regexp@ anche in un modo piu' "ad oggetti":
<pre>
 >> /a/.match 'ciao'
 => #<MatchData:0x27c9b90>
 >> /a/.match 'cio'
 => nil
</pre>


Quel @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@:
<pre>
 >> case '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:55 by Ruby Fan (127.0.0.1)