Trova e rimpiazza di più
Una introduzione all’uso delle espressioni regolari per editare le pagine Web.
Vi siete finalmente dati una regolata: è ora di mettere le mani su quel vecchio sito web e dargli una aggiornatina. Il problema è che il cliente non vuole spendere più di tremila lire e una pacca sulla spalla, il tempo è quello che è e comunque avete anche molto altro da fare. D’altra parte, ritoccare duecentocinquanta pagine richiede lavoro, e molto, e pure noioso... o no? No, se impariamo a dominare le espressioni regolare: una delle funzionalità meglio nascoste e più potenti di DreamWeaver e di BBEdit.
Immaginiamo che il vecchio sito sia stato scritto con il vecchio programma autore Claris Home Page, che inseriva in ogni pagina una scritta come questa:
<!--This file created 16-08-1998 15:02 by Claris Home Page version 3.0-->Rimuovere queste indicazioni non è banale, perché le date e le ore inserite dal programma in mezzo alla riga sono diverse per ogni singola pagina web. Il problema si risolve in un lampo con una espressione regolare. In pratica, si usano alcuni caratteri speciali per rappresentare una serie di caratteri normali. Una cosa del genere (ma più povera e limitata) si usava sui PC ai tempi di MS-DOS, e si intravvede ancora oggi sotto a Windows: per esempio, quando su PC si va a cercare un documento JPEG spesso si dice che si stanno cercando i file “*.JPG”: l’asterisco nelle espressioni regolari sta a significare “zero o più caratteri” e quindi per Windows “*.JPG” significa “qualsiasi nome che però finisca con “.JPG”. (Vedere “I mattoni delle espressioni regolari”).
Lanciate DreamWeaver e aprite la sua finestra “Find and replace”. Selezionate la casella “Use Regular Expressions” e curate che il menu in testa alla finestra dica “Entire Local Site”. Nello spazio dove cercare scrivete:
<!--This file created .* by Claris Home Page version 3.0-->
In questo modo noi troveremo tutte le righe che cominciano e finiscono con le parole prevedibili, ignorando quel che ci sta in mezzo. Potremo sostituirle con quel che vogliamo (anche cancellandole del tutto). E ricordate che questa potenza può venire applicata automaticamente su tutti i file HTML che costituiscono un sito!
Una certa percentuale di pagine del vecchio sito conteneva prezzi in lire, che vanno cambiati con le cifre in Euro. Il cliente ci ha chiesto di segnalargli quali pagine sono interessate. Come trovarle? Se ci fosse scritto “lit” sarebbe semplice, ma così non è. Con le espressioni regolari è comunque facile. Basta fare una ricerca di tutte le pagine che contengono un punto seguito da tre cifre, così:
\.[0-9][0-9][0-9]
BBEdit è il più potente editore di testi esistente su Macintosh (lo sarebbe anche per PC, se ne esistesse una versione Windows, che però non c’è). Molti grafici che si occupano di web ne possiedono già una copia, perché BBEdit era incluso in DreamWeaver sino alla versione 3.0 del programma Macromedia; gli altri possono acquistarne una copia direttamente sul sito www.barebones.com.
La sua finestra “Find and Replace” consente l’uso delle espressioni regolari in tutta la loro potenza. Per attivarle bisogna cliccare la casella “Use grep” (le espressioni regolari apparvero per la prima volta in uno strumento Unix chiamato appunto “grep”).
Il vecchio sito conteneva un elenco di duecento indirizzi Web, non cliccabili ; vi hanno chiesto di trasformarli in una più utile pagina di link. Come procedere? Con le espressioni regolari il problema si risolve in un battito di ciglia. Cercate tutte le occorrenze di
\rhttp://(.*)Rimpiazzatele con:
\r<A HREF=”http://”></A>Qui il trucco sta nel fatto che quando mettiamo una serie di caratteri tra parentesi nella ricerca, quella serie di caratteri può venire usata nella sostituzione indicandola con . Quindi, abbiamo scritto: “trova tutte le righe che cominciano con http, rimpiazzale con altrettante righe che contengono un link a quell’indirizzo e nel usano il nome come parte cliccabile”.
Un altro esempio. Abbiamo un elenco di nomi in formato “Rossi, Mario” e ci fanno notare che indicare il cognome prima del nome è scorretto e anche un po’ fantozziano. Come invertire i nomi con i cognomi? Basta ricercare:
(.*), (.*)E sostituire con:
In questo caso abbiamo semplicemente invertito le parti del cognome, scambiando la prima “/1” con la seconda “”.
Occorrenze isolate
Carattere speciale | Uso | Esempio | Troverebbe... | Non troverebbe... |
. | Qualsiasi carattere tranne INVIO | Ma.ma | "Mamma" | "Maremma" |
^ | L'inizio della riga | ^ | " " a inizio riga | " " a met riga |
$ | La fine della riga | $ | "" a fine riga | "" a met riga |
---|
[] | Carattere compreso tra due estremi | [0-9] | "1", "5" oppure "7" | "a", "K" o "-" |
---|
| | [a-z] | "b" oppure "w" | "B, "W" oppure "7" |
---|
| | [0-9a-zA-Z] | "a" oppure "G" oppure "7" | "-" oppure "&" |
---|
| | Una tra due alternative | Mac|World | "Mac" oppure "World" |
---|
Ripetizioni
Carattere speciale | Uso | Esempio | Troverebbe... | Non troverebbe... |
---|
+ | Una o pi occorrenze del carattere precedente | [0-9]+ | "1993" o "1234567" | |
---|
| | Ma.+ma | "Mamma" o "Maremma" | "Mama" |
---|
* | Zero o pi occorrenze del carattere precedente | AB*C | "AC" o "ABBBBBC" | "BC" o "CA" |
---|
| | Ma.*ma | "Mama", "Mamma" o "Maremma" | "mamma" |
---|
Come indicare i caratteri speciali
\t | Tabulatore |
\r | Invio |
\* | * |
\+ | + |
Imparare a dominare le espressioni regolari può provocare un bel mal di testa. D’altra parte, il loro uso nel tempo finisce per evitare mal di testa ben più cocenti: ne vale davvero la pena.
Originariamente pubblicato in data 31/12/2005