Indice

Capitolo 10.
Le Regular Expressions






   1. Cenni

Le Regular Expressions sono un sistema per definire pattern di ricerca che consentano l'individuazione e l'eventuale sostituzione di porzioni di testo.

     Le regexpr seguono alcune basilari regole:        
  • Le regular expression si scrivono per convenzione comprese fra due slash '/'

       
  • Le lettere ed i numeri non hanno altro significato se non il loro proprio naturale

La regexpr /a/ significa un singolo carattere "a" e null'altro...        
  • I caratteri possono essere raggruppati in classi

Una classe di caratteri è l'enumerazione dei singoli caratteri che la compongono racchiusa da parentesi quadre. Ad esempio /[abc]/ è la classe composta dai caratteri "a", "b" e "c". Questa regexpr descrive quindi le stringhe "a", "b", "c".

     Esiste la possibilità di descrivere direttamente insiemi di caratteri: /[a-z]/ descrive tutte le lettere minuscole, /[0-9]/ tutti i numeri, /[B-D]/ i caratteri "B", "C" e "D".

     Esiste anche la possibilità di negare una classe, cioé di descrivere tutti i caratteri che NON fanno parte della classe dichiarata. La negazione si esegue inserendo un accento circonflesso ('^') all'inizio della regexpr, es: /[^abc]/ descrive TUTTI i caratteri escluse le lettere "a", "b" e "c".        
  • Si possono descrivere possibili stringhe alternative

La separazione delle alternative avviene con il carattere pipe ('|'), es: /pippo|pluto/. All'interno di una regexpr più complessa si può delimitare l'elenco delle possibili scelte con una coppia di parentesi tonde, come in: /asinto(to|ttico)/ che descrive le due parole "asintoto" e "asintottico".        
  • Un carattere, una classe o una scelta mutipla possono essere quantificati

... è possibile cioé comunicare quante volte uno di questi elementi può ripetersi. Il segno * indica che l'elemento si può ripetere zero o più volte, il simbolo + indica la ripetizione per una o più volte, il simbolo ? indica la ripetizione zero o una volta, ossia indica l'opzionalità di un elemento: può esistere o meno. Questi quantificatori devono essere giustapposti all'elemento al quale si riferiscono. Es: /times?/ descrive la parola "time" o la parola "times". Invece l'espressione /(Long time )?ago/ descrive le stringhe "Long time ago" e "ago".        
  • Il carattere backslash ("\") commenta il carattere successivo

... consente cioè al carattere successivo di perdere il suo significato particolare. Ad esempio, come è possibile specificare il caratter ? dentro una classe di caratteri? Semplice: /[\?;!]/. Una rudimentale classe di punteggiatura. Gli altri due caratteri non hanno un significato particolare, quindi non necessitano di backslash davanti. Questo non rigetta la possibilità che siano preceduti lo stesso da un backslash; semplicemente implica la ridondanza del backslash stesso.



Inizio Capitolo Indice