regolari
Jesper K. Pedersen
Traduzione italiana: Federico Zenith
Traduzione italiana: Nicola Ruggero
Manuale dell’editor di espressioni regolari
2
1 Introduzione 5
2 Che cos’è un’espressione regolare 6
3 Usare l’editor di espressioni regolari 9
3.1 L’organizzazione della schermata . . . 9
3.2 Strumenti di modifica . . . 10
3.2.1 Strumento di selezione . . . 10
3.2.2 Strumento di testo . . . 10
3.2.3 Strumento dei caratteri . . . 10
3.2.4 Strumento per qualsiasi carattere . . . 11
3.2.5 Strumento di ripetizione . . . 11
3.2.6 Strumento di alternativa . . . 11
3.2.7 Strumento di composizione . . . 12
3.2.8 Strumenti inizio/fine riga . . . 12
3.2.9 Strumenti di confine/non confine di parola . . . 12
3.2.10 Strumenti di riferimento in avanti positivo o negativo . . . 13
3.3 Espressioni regolari definite dall’utente . . . 13
4 Segnalare gli errori e suggerire nuove funzionalità 14 5 Domande ricorrenti 15 5.1 L’editor di espressioni regolari supporta i riferimenti all’indietro? . . . 15
5.2 L’editor di espressioni regolari supporta la visualizzazione delle corrispondenze? . 15 5.3 Sono l’autore di un programma KDE, come posso usare questo strumento nel mio programma? . . . 15
5.4 Non trovo il pulsante Modifica espressione regolare nei programmi di un’altra installazione di KDE3, come mai? . . . 15
Sommario Questo manuale descrive l’editor di espressioni regolari
Capitolo 1
Introduzione
L’editor di espressioni regolari è un editor per la modifica grafica di espressioni regolari (diversa- mente dalla normale sintassi ASCII). Di solito le espressioni regolari si scrivono usando la sintassi ASCII, di cui questo è un esempio: ˆ.*kde\b. I maggiori inconvenienti di questo stile sono:
• È difficile da capire per chi non è un programmatore.
• Impone di usare caratteri di escape prima di certi simboli (per esempio, per indicare un asterisco bisogna scrivere \*).
• Richiede di memorizzare regole di precedenza (A cosa corrisponde x|y*? A una sola x o a un numero arbitrario di y, oppure un numero arbitrario di x e y miste?)
L’editor di espressioni regolari, invece, ti fa disegnare la tua espressione regolare in modo non ambiguo. L’editor risolve almeno i punti due e tre indicati qui sopra. Potrebbe non rendere le espressioni regolari facili per chi non è un programmatore, anche se solo le prove degli utenti lo possono dire. Quindi, se non sei un programmatore, e hai acquisito la forza delle espressioni regolari da questo editor, per piacerefammelo sapere.
Manuale dell’editor di espressioni regolari
Capitolo 2
Che cos’è un’espressione regolare
Una espressione regolare è un modo di specificare delle condizioni da verificarsi in una situazione ipotetica. Normalmente quando cerchi in un editor di testo, specifichi il testo da cercare lette- ralmente; usando le espressioni regolari, invece, dici a cosa assomiglia una certa corrispondenza.
Degli esempi possono essere Cerco la parola KDE, ma solo all’inizio di una riga, o Cerco la parola la, ma deve essere da sola, o Cerco dei file che iniziano con la parola prova, seguita da un numero di cifre, per esempio prova123, prova107 e prova007
Costruisci le espressioni regolari a partire da sottoespressioni regolari, come costruiresti delle grosse costruzioni Lego da parti più piccole. Come nel mondo dei Lego, ci sono dei blocchi fondamentali. Qui di seguito descriverò ciascuno di questi blocchi fondamentali usando un po’
di esempi.
Example 2.1Ricerca di testo normale.
Se vuoi solo cercare un certo testo, le espressioni regolari non sono decisamente una buona scelta.
La ragione è che le espressioni regolari assegnano un significato speciale a certi caratteri. Ciò include i caratteri seguenti: .*|$. Quindi se vuoi cercare il testo kde. (cioè i caratteri kde seguiti da un punto), dovresti specificarlo come kde\.1Scrivere \. invece che solo . è detto escaping.
Example 2.2Individuare gli URL
Quando selezioni qualcosa che sembra un URL in KDE, il programma klipper si offrirà di avviare konquerorcon l’URL selezionato.
Klipper lo fa confrontando la selezione con diverse espressioni regolari, e quando una delle espressioni regolari corrisponde, sarà offerto il programma corrispondente.
L’espressione regolare per gli URL dice (tra l’altro) che la selezione deve cominciare con il testo http:// . Questo è descritto usando le espressioni regolari prefiggendo al testo http:// un accento circonflesso (il carattere ˆ).
Quello sopra è un esempio di confronto posizionale usando le espressioni regolari. Similmente, la posizione fine riga può essere indicata usando il carattere $ (cioè un segno del dollaro).
6
Example 2.3Cercare la parola la, ma non lama, pala o malamente
Due tipi altri di posizioni possono essere descritti nel modo sopra, cioè la posizione al confine di una parola, e la posizione non al confine di una parola. Le posizioni sono specificate usando il testo
\b(per il confine di parola) e \B (per il non-confine di parola).
Quindi, si può cercare la parola la usando l’espressione regolare \bla\b. Essa specifica che stiamo cercando la senza lettere su entrambi i suoi lati (cioè un confine di parola su entrambi i lati).
Le quattro espressioni regolari che corrispondono a posizioni sono inserite nell’editor di espressioni regolari usandoquattro diversi strumenti di posizione.
Example 2.4Ricerca di questo o quello
Immagina di voler scorrere i tuoi documenti cercando la parola questo o la parola quello. Con un metodo di ricerca normale potresti farlo in due passaggi: la prima volta cercheresti solo questo, e la seconda quello.
Usando le ricerche con espressioni regolari puoi cercarle entrambe in un sol colpo. Puoi farlo cercando questo|quello, cioè separando le due parole con una barra verticale.2
Nell’editor di espressioni regolari non scrivi tu la barra verticale, ma invece selezioni lostrumento di alternativa, e inserisci le sottoespressioni regolari una sopra l’altra.
Example 2.5Corrispondere a qualsiasi cosa
Le espressioni regolari sono spesso confrontate alla corrispondenza dei caratteri jolly nella shell, cioè la capacità di specificare un certo numero di file usando l’asterisco. Probabilmente riconoscerai la corrispondenza dei caratteri jolly dai due esempi seguenti:
• ls *.txt: qui *.txt è il carattere jolly che corrisponde a qualsiasi file che finisce con l’estensione .txt
• cat prova??.res: corrisponde a qualsiasi file che inizia per prova seguito da due caratteri qualsiasi, e infine seguito da .res
Nella shell l’asterisco corrisponde a qualsiasi carattere un numero qualsiasi di volte. In altre parole, l’asterisco corrisponde a qualsiasi cosa. Nella sintassi delle espressioni regolari ciò si scrive come .*. Il punto corrisponde a qualsiasi carattere, cioè solo un carattere, e l’asterisco dice che l’espressione regolare che lo precede può occorrere un qualsiasi numero di volte. Insieme, vuol dire qualsiasi carattere un qualsiasi numero di volte.
Ciò potrebbe sembrare troppo complicato, ma quando avrai la visione d’insieme ne capirai la potenza. Vediamo un’altra espressione regolare di base: a. La lettera a da sola è un’espressione regolare che corrisponde a una sola lettera, cioè la lettera a. se combiniamo con l’asterisco, cioè a*, abbiamo un’espressione regolare che corrisponde a qualsiasi numero di a.
Possiamo combinare diverse espressioni regolari l’una dopo l’altra, per esempio ba(na)*.3. Im- magina di aver scritto questa espressione regolare nel campo di ricerca di un editor di testo:
avresti trovato le parole seguenti (tra le altre): ba, bana, banana, bananananananana.
Date le informazioni sopra, si spera che non ti sia difficile scrivere l’espressione jolly della shell test??.rescome espressione regolare. Risposta: test..\.res. Il punto, da solo, è un carattere qualsiasi. Per corrispondere a un punto devi scrivere \.4. In altre parole, l’espressione regolare
\.corrisponde a un punto, mentre un punto da solo corrisponde a qualsiasi carattere.
Nell’editor di espressioni regolari, le espressioni regolari ripetute sono create usando lo strumento di ripetizione
Manuale dell’editor di espressioni regolari
Example 2.6Sostituire & con & in un documento HTML
In HTML il carattere speciale & deve essere scritto &; ciò è simile all’escaping nelle espressioni regolari.
Immagina di aver scritto un documento HTML in un normale editor (ad es. XEmacs o Kate), e ti sei totalmente dimenticato di questa regola. Ciò che faresti una volta resoti conto dell’errore sarebbe sostituire ogni occorrenza di & con &.
Ciò può essere fatto facilmente usando la normale ricerca e sostituzione. Tuttavia, c’è un proble- ma. Immagina di esserti ricordato questa regola un pochino, e di aver scritto giusto in alcuni posti.
Sostituire senza criterio farebbe sostituire & con &.
Quello che vuoi dire è che & dovrebbe essere sostituito solo se non è seguito dalle lettere amp;.
Puoi farlo usando le espressioni regolari usando i riferimenti in avanti.
L’espressione regolare che corrisponde a una ´´e commerciale´´ solo se non è seguito dalle lettere amp; ha questo aspetto: &(?!amp;). Ciò è ovviamente più facile da leggere usando l’editor di espressioni regolari, dove useresti glistrumenti di riferimento in avanti.
8
Capitolo 3
Usare l’editor di espressioni regolari
Questo capitolo ti spiegherà come funziona l’editor di espressioni regolari.
3.1 L’organizzazione della schermata
La parte più importante dell’editor è ovviamente l’area di modifica, questa è l’area dove disegni la tua espressione regolare. Quest’area è la più grande area grigia nel centro.
Sopra l’area di modifica ci sono due barre degli strumenti: la prima contiene leazioni di modifica, molto simili agli strumenti di modifica in un programma di disegno. La seconda barra contiene il pulsante Che cos’è?, e i pulsanti Annulla e Rifai.
Sotto l’area di modifica trovi l’espressione regolare attualmente costruita, nella cosiddetta sintassi ASCII. La sintassi ASCII è aggiornata mentre modifichi l’espressione regolare nell’editor grafico.
Se invece preferisci aggiornare la sintassi ASCII fallo pure, l’editor grafico verrà aggiornato in tempo reale per rispecchiare i tuoi cambiamenti.
Infine, a sinistra dell’area di modifica troverai un certo numero di espressioni regolari prefabbri- cate. Servono a due cose: (1) quando carichi l’editor con un’espressione regolare, quest’espressio- ne regolare è resa più elegante o più estesa sostituendo le espressioni regolari più comuni. Nella
Manuale dell’editor di espressioni regolari
schermata sopra, puoi vedere come la sintassi ASCII ´´.*´´ sia stata sostituita con un riquadro che dice ´´qualsiasi cosa´´. (2) Quando inserisci un’espressione regolare potresti trovare dei blocchi per la tua espressione regolare nell’insieme di espressioni regolari prefabbricate. Vedi la sezione sulleespressioni regolari definite dall’utenteper sapere come salvare le tue espressioni regolari.
3.2 Strumenti di modifica
Il testo in questa sezione presuppone che tu abbia letto il capitolo su cos’è un’espressione regolare, o abbia conoscenze precedenti sull’argomento.
Tutti gli strumenti di modifica sono situati nella barra degli strumenti sopra l’area di modifica.
Ognuno di loro sarà descritto nel seguito.
3.2.1 Strumento di selezione
Lo strumento di selezione è usato per segnare gli elementi per la copiatura e per il trascinamento.
È molto simile a uno strumento di selezione in qualsiasi programma di disegno.
3.2.2 Strumento di testo
Usando questo strumento puoi inserire del testo normale da far corrispondere. Il testo è con- frontato letteralmente, cioè non devi preoccuparti di far precedere i caratteri speciali da \.
Nell’esempio sopra sarà costruita l’espressione regolare seguente: abc\*\\\)
3.2.3 Strumento dei caratteri
Usando questo strumento puoi inserire degli intervalli di caratteri. Gli esempi includono quello che in testo ASCII è [0-9], [ˆa-zA-Z,_]. Quando inserisci un elemento con questo strumento appare una finestra nella quale specifici gli intervalli dei caratteri.
Vedi la descrizione delleespressioni regolari ripetute.
10
3.2.4 Strumento per qualsiasi carattere
Questa è l’espressione regolare ´´punto´´ (.). Corrisponde a qualsiasi carattere.
3.2.5 Strumento di ripetizione
Questi sono gli elementi ripetuti. Includono ciò che in sintassi ASCII è rappresentato da un asterisco (*), un più (+), un punto interrogativo (?) e gli intervalli ({3,5}). Quando inserisci un elemento usando questo strumento, appare una finestra che ti chiede il numero di ripetizioni.
Specifichi cosa ripetere disegnando il contenuto ripetuto dentro il riquadro inserito da questo strumento.
Gli elementi ripetuti possono essere costruiti sia dall’interno sia dall’esterno. Cioè puoi prima di- segnare cosa ripetere, selezionarlo e usare lo strumento di ripetizione per ripeterlo. In alternativa, puoi prima inserire l’elemento di ripetizione, e disegnarci dentro cosa ripetere.
Vedi la descrizione delleespressioni regolari ripetute.
3.2.6 Strumento di alternativa
Questa è l’espressione regolare dell’alternativa (|). Specifichi le alternative disegnando ogni alternativa sopra le altre dentro la casella inserita da questo strumento.
Vedi la descrizione delleespressioni regolari alternative
Manuale dell’editor di espressioni regolari
3.2.7 Strumento di composizione
Lo strumento di composizione non rappresenta nessuna espressione regolare. È usato per rag- gruppare altri componenti in un riquadro, che può essere facilmente ridotto al suo solo titolo.
Questo può essere visto nella parte destra della schermata sopra.
3.2.8 Strumenti inizio/fine riga
Gli strumenti di inizio e fine della riga corrispondono rispettivamente all’inizio e alla fine della riga. L’espressione regolare nella schermata sopra corrisponde solo a righe fatte di soli spazi.
Vedi la descrizione delleespressioni regolari posizionali.
3.2.9 Strumenti di confine/non confine di parola
Gli strumenti di confine corrispondono rispettivamente a un confine o a un non-confine di parola.
L’espressione regolare nella schermata corrisponde quindi a qualsiasi parola che cominci per la.
La parola la stessa, però, non corrisponde.
Vedi la descrizione delleespressioni regolari dei confini.
12
3.2.10 Strumenti di riferimento in avanti positivo o negativo
Gli strumenti di riferimento specificano un’espressione in avanti positiva o negativa cui corrispondere. La corrispondenza, però, non fa parte della corrispondenza totale.
Nota: ti è concesso mettere i riferimenti solo alla fine delle espressioni regolari. L’editor di espressioni regolari non costringe a rispettarlo.
Vedi la descrizione delleespressioni con riferimenti in avanti.
3.3 Espressioni regolari definite dall’utente
Situata a sinistra dell’area di modifica c’è una casella a elenco contenente le espressioni regolari definite dall’utente. Alcune espressioni regolari sono preinstallate con la tua installazione di KDE, mentre ne puoi creare altre da te.
Queste espressioni regolari servono a due scopi (vedi descrizione dettagliata), cioè (1) offrirti una serie di blocchi fondamentali, e (2) per rendere più eleganti le espressioni regolari comuni.
Puoi salvare le tue espressioni regolari facendo clic col pulsante destro del mouse nell’area di modifica, e scegliendo Salva espressione regolare.
Se l’espressione regolare che salvi è dentro un contenitore composto, l’espressione regolare contribuirà a rendere le espressioni regolari successive più eleganti.
Le espressioni regolari definite dall’utente possono essere cancellate o rinominate premendo il tasto destro del mouse sopra l’espressione regolare in questione nel riquadro a elenco.
Manuale dell’editor di espressioni regolari
Capitolo 4
Segnalare gli errori e suggerire nuove funzionalità
Gli errori e le funzionalità vanno segnalati attraverso ilSistema di tracciamento degli errori di KDE. Prima di segnalare un errore o suggerire una funzionalità, controlla per piacere che non siano stati giàsegnalati/suggeriti.
14
Capitolo 5
Domande ricorrenti
5.1 L’editor di espressioni regolari supporta i riferimenti all’indietro?
Al momento non li supporta. È previsto che li supporterà nella prossima versione.
5.2 L’editor di espressioni regolari supporta la visualizzazione delle corrispondenze?
No, forse sarà disponibile nella prossima versione.
5.3 Sono l’autore di un programma KDE, come posso usare questo strumento nel mio programma?
Consulta ladocumentazione della classe KRegExpEditorInterface.
5.4 Non trovo il pulsante Modifica espressione regolare nei programmi di un’altra installazione di KDE3, come mai?
L’oggetto editor di espressioni regolari fa parte del pacchetto KDE-utils. Se questo pacchetto non è installato, il pulsante Modifica espressione regolare non apparirà nei programmi.
Manuale dell’editor di espressioni regolari
Capitolo 6
Riconoscimenti e licenza
Copyright della documentazione 2001, Jesper K. [email protected]
Traduzione italiana di Federico Zenith [email protected], Nicola Ruggero [email protected], Pino [email protected]
Questa documentazione è concessa in licenza sotto i termini dellaGNU Free Documentation License.
Questo programma è concesso in licenza sotto i termini dellaGNU General Public License.
16