Trovare Parole Ripetute

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


Trovare Parole Ripetute

Anche questo e’ semplice se usiamo le Regexp. Anzitutto dobbiamo sapere come individuare una parola.

Il procedimento e’ leggermente differente da quello per individuare una semplice stringa. Infatti, abbiamo bisogno di usare il metacarattere “\b” per indicare, l’inizio e la fine di una parola. Fate attenzione a non confondere questo concetto con i simboli “^” e “$” che invece indicano l’inizio e la fine di una riga

Esempio: >> rgx=/\bvia\b/ => /\bvia\b/ >> ‘via’=rgx => 1 >> ‘ferrovia’=rgx => nil

Abbiamo imparato un trucco interessante. Ricordate che esiste anche un opposto di “\b” , cioe’ “\B” , che indica un non word boundary, un punto in cui non c’e un limite della parola.

Ora, passiamo alle backreference. In pratica, questi simboli ci permettono dire “uno dei simboli gia’ trovati”. Ad esempio: >> rgx=/(.)\1/ # matcha ogni carattere, e poi lo stesso => /(.)\1/ >> “ab” =~ rgx => nil >> “aa” =~ rgx => 0 >> “x1x” =~ rgx => nil >> “x11x” =~ rgx => 1

In pratica scriverete un “\” e poi un numero che indica a quale gruppo si fa riferimento (in questo caso il primo). Vediamo un esempio piu’ complicato: >> rgx=/(pi|po)\1/ => /(pi|po)\1/ >> “pipi” =~ rgx => 0 >> “popi” =~ rgx => nil >> “popo” =~ rgx => 0

Ovviamente potete usare anche “\2 \3 \4 \n”.

A questo punto la nostra espressione regolare e’ semplice:

rgx=/(\b\w+\b)\s+\1/ => /(\b\w+\b)\s+\1/ “io vado a scuola” =~ rgx => nil “io vado a a scuola” =~ rgx => 8 “io vado a scuola scuola” =~ rgx => 10

Created on November 25, 2005 13:43 by il gruppo (256.256.256.256)