Nel capitolo 12 dedicato alle stringhe abbiamo già incontrato delle espressioni regolari che ora possiamo comprendere meglio, rivediamole. Per accedere a delle sottostringhe si può scrivere
> str = "Ciao mondo" => "Ciao mondo" > str[/w+s/] => "Ciao "
Sinonimo di [] è il metodo slice
e il metodo slice!
:
> str.slice(/w+s/) => "Ciao "
Allo stesso modo si utilizzano con index
che restituisce l'indice della prima occorrenza della sottostringa espressa dal pattern:
> str.index(/[aeiou]/) => 1
analogo il comportamento di rindex
che, a differenza di index
, restituisce l'ultima occorrenza della sottostringa che verifica il pattern:
> str.rindex(/[aeiou]/) => 9
Possiamo usare le espressioni regolari anche come argomento dei metodi sub
e gsub
:
> str.gsub(/([aeiou])/, '(1)' ) => "C(i)(a)(o) m(o)nd(o)" > str.gsub(/s(w+)/){|c| c.upcase} => "Ciao MONDO"
Anche split
può essere utilizzato passando come argomento un'espressione regolare:
> str.split(/s/) => ["Ciao", "mondo"]
Interessante è infine l'utilizzo delle regexp
con scan
che itera attraverso la stringa e inserisce tutti i risultati che verificano il pattern all'interno di un array:
> str.scan(/w+/) => ["Ciao", "mondo"]
Da questi esempi è lampante la notevole versatilità che le espressioni regolari aggiungono ai metodi della classe String
.