LibreOffice: usare le espressioni regolari per le ricerche

Le espressioni regolari (regex) permettono di condurre ricerche complesse e approfondite, risparmiando tempo. Basta imparare la sintassi di base

Loghi delle applicazioni Libreoffice e la scritta RegEx

Attenzione!

Questo articolo è stato scritto originariamente tanti anni fa (era l'epoca della versione 3 di OpenOffice e LibreOffice non esisteva ancora). Nel riproporlo, ho cercato di aggiornarlo correttamente, tuttavia la perfezione non è di questo mondo... Sicuramente non mia! Se trovi errori o manchevolezze, segnalamele e cercherò di rimediare.

Le espressioni regolari sono uno strumento avanzato per la ricerca e la sostituzione del testo. Queste operazioni vengono di solito svolte in LibreOffice Writer mediante la finestra di dialogo Trova e sostituisci, che mette a disposizioni le caselle Maiusc/minusc e Solo parole intere per effettuare ricerche tenendo conto della differenza tra maiuscole e minuscole e del fatto che la stringa di testo cercata sia un'unica parola e non parte di una parola più lunga.

Impartendo in Writer il comando Modifica → Trova e sostituisci viene richiamata la finestra con le opzioni di ricerca.

La finestra contiene le caselle Trova e Sostituisci, più altre con varie opzioniClicca per ingrandire

Cliccando Altre opzioni, vengono mostrate ulteriori possibilità di affinamento delle ricerche; tra queste, è la casella Espressioni regolari che permette di inserire il turbo al motore di ricerca e di impostare ricerche apparentemente impossibili.

Se il pannello Altre opzioni è aperto, puoi condurre ricerche avanzate, tra cui quelle mediante espressioni regolariClicca per ingrandire

Puoi così usare le ricerche regolari nella casella Trova. Attenzione: le espressioni regolari non possono essere usate nella casella Sostituisci, tranne in alcuni casi specifici, citati più avanti.

Questo articolo descrive come usare le ricerche regolari in LibreOffice Writer, tuttavia la sua utilità non è limitata all'elaboratore di testo: oltre che essere usate anche in Calc e in Base, le espressioni regolari sono molto comuni nel mondo dell'informatica e vengono di solito chiamate regex o regexp. Purtroppo la sintassi non è sempre uniforme, ma la teoria che sta alla base sì. LibreOffice può utilizzare espressioni regolari secondo lo standard POSIX, caratterizzate dall'essere racchiuse tra parentesi quadre. Con i limiti accennati, questo tutorial è un'introduzione al mondo più ampio e non limitato a LibreOffice delle espressioni regolari.

Le espressioni regolari fanno uso di alcuni caratteri (Tabella 1) per definire condizioni particolari di ricerca. Se attivi le espressioni regolari, questi caratteri assumono significati specifici e non possono più essere usati nella ricerca come semplici caratteri testuali. Ovviamente, esiste una scappatoia per trovare tali caratteri testuali anche usando le espressioni regolari, ma ciò rientra comunque nell'uso dei caratteri speciali.

Tabella 1. I caratteri speciali per le ricerche con espressioni regolari

Carattere

Funzione

. (punto)

Nelle corrispondenze di un unico carattere, indica un carattere qualunque, con l'eccezione dell'a capo forzato (quello inserito mediante Maius+Invio).

^ (accento circonflesso)

Nelle corrispondenze posizionali, indica che la stringa cercata deve trovarsi all'inizio del testo. Nelle ricerche alternative, se posto come primo carattere entro le parentesi quadre, rende negativa la ricerca (cioè esclude dalla ricerca la stringa indicata).

$ (dollaro)

Nelle corrispondenze posizionali, indica che la stringa di testo che la precede deve trovarsi alla fine di un paragrafo o di una cella.
Seguita da x ($x) è un backreference e indica il risultato della ricerca effettuata mediante parentesi tonde, dove x è la posizione delle parentesi. Non può essere usata nella casella Trova, ma solo nella casella Sostituisci.

* (asterisco)

Indica che il carattere precedente può comparire un numero imprecisato di volte ma può anche non comparire.

+ (più)

Indica che il carattere precedente deve comparire una o più volte.

? (punto interrogativo)

Indica che il carattere precedente può essere presente o può non esserlo.

\ (barra retroversa)

Nelle corrispondenze posizionali, in combinazione con < e con >, indica che la stringa cercata deve trovarsi all'inizio o alla fine di una parola.
In combinazione con un altro carattere speciale, indica che esso deve essere interpretato non come carattere speciale di un'espressione regolare, ma come carattere normale di una ricerca letterale.
In combinazione con n (\n), indica il carattere di ritorno a capo forzato (inserito mediante Maiusc+Invio), ma solo nella casella Trova. Nella casella Sostituisci indica invece l'a capo (Invio).
In combinazione con t (\t) indica il carattere di tabulazione.
In combinazione con xXXXX (\xXXXX) indica un carattere espresso mediante il corrispondente valore esadecimale XXXXX.
In combinazione con x (\x) è un backreference e indica il risultato della ricerca effettuata mediante parentesi tonde, dove x è la posizione delle parentesi. Non può essere usata nella casella Sostituisci.

&

Usata esclusivamente nella casella Sostituisci, inserisce tutta la corrispondenza trovata.

[] (parentesi quadre)

Nelle corrispondenze alternative, raccolgono le alternative possibili (un carattere ognuna). Accettano intervalli alfabetici e numerici, se gli estremi sono separati da un segno di trattino.

() (parentesi tonde)

Raggruppano i criteri di ricerca e permettono di usare le corrispondenze come backreference.

{} (parentesi graffe)

Nelle corrispondenze ripetute, sono usate mediante la sintassi {m,M} per indicare il numero di volte minimo (m) e il numero di volte massimo (M) che il carattere precedente deve essere presente nel testo per soddisfare la ricerca. Un valore unico indica invece il numero esatto di corrispondenze ripetute.

| (barra verticale)

Nelle corrispondenze alternative, separa le alternative di ricerca.

<> (minore e maggiore)

Usati in combinazione con la barra retroversa (\< e \>) indicano che la stringa cercata deve trovarsi all'inizio o alla fine di una parola.

- (trattino)

Nelle corrispondenze alternative, all'interno di parentesi quadre, separa gli estremi dell'intervallo di valori ammessi.

Devi inoltre considerare che LibreOffice scompone un documento di Writer in elementi semplici ed effettua la ricerca in ognuno di essi: ogni paragrafo, ogni tabella e ogni cornice viene esaminato a sé. Ciò ha ripercussioni in alcuni casi specifici: per esempio, la stringa di ricerca e.*i (che impone di trovare il testo che inizia per e, dopo la quale c'è un carattere qualunque o nessun carattere e che poi ha una i), non segnala il caso in cui un paragrafo termina con la lettera e e il paragrafo seguente inizia per i. A questo proposito, è bene ricordare che ogni paragrafo termina con un apposito carattere (che può essere visualizzato facendo clic sul pulsante Caratteri non stampabili della barra degli strumenti Standard di LibreOffice) e che perciò la stringa di ricerca citata dovrebbe in teoria rilevare la corrispondenza se un paragrafo termina con la lettera e e il seguente inizia con la lettera i. Invece, a causa della granulosità della ricerca di LibreOffice, il testo non viene rilevato: per farlo, occorre procedere in modo più approfondito, come vedrai.

I tipi di corrispondenza che possono essere rilevati mediante le espressioni regolari sono diversi. Tralascio ovviamente il più semplice (la corrispondenza letterale), perché in realtà non fa uso delle espressioni regolari e che si limita a fornire il testo corrispondente esattamente alla stringa di ricerca indicata. I tipi di corrispondenza per i quali viene fatto uso delle espressioni regolari sono qui descritti non come un mero elenco, ma secondo la necessità che permettono di soddisfare.

Come faccio per trovare parole che si differenziano solo per un carattere?

  • Tipo di corrispondenza: un unico carattere
  • Caratteri speciali: . (punto) e ? (punto interrogativo)

Talvolta occorre trovare parole che possono avere grafie leggermente diverse, discordanti per una sola lettera; può trattarsi di grafie effettivamente diverse (omnicomprensivo o onnicomprensivo), o del numero del sostantivo (mela e mele). In questo caso si usa il carattere . (punto) per indicare il carattere ignoto. Per esempio, la stringa di ricerca ro.a viene individuata in roca, in irosa, in cromato e in chiaro amore. Nota che lo spazio è, agli effetti della ricerca, considerato un carattere.

Oltre al punto, puoi usare un punto interrogativo: in questo caso, il carattere che precede il punto interrogativo nella stringa di ricerca può essere o può non essere presente nel testo. Per esempio, la stringa di ricerca br?usto viene individuata sia in abbrustolita sia in mezzobusto.

Il punto e il punto interrogativo, come altri caratteri speciali, possono essere usati in combinazione tra loro. Se si in una stringa di ricerca inserisci un punto seguito da un punto interrogativo, indichi che può essere presente qualunque carattere o può anche non esservene alcuno.

Per esempio, la stringa di ricerca al.?a viene individuata in spalatore, in appaltato, in soppalcare, ma non in galera (perché il punto e il punto interrogativo riguardano un unico carattere, mentre in galera ve ne sono due).

Come faccio a trovare parole che si differenziano per più caratteri consecutivi, uguali tra loro o diversi?

  • Tipo di corrispondenza: ripetuta
  • Caratteri speciali: + (più), * (asterisco), {m,M} (parentesi graffe con valore minimo e valore massimo)

Se occorre rintracciare parole che nel testo possono comparire in forme diverse per la ripetizione di un carattere, come intravedere e intravvedere, si usa il carattere + (più), che indica di trovare una o più ricorrenze del carattere precedente. Per esempio, la stringa ob+i viene individuata sia in obiettivo sia in obbiettivo, ma anche in obbbiettivo.; non viene invece individuata in poiana, poiché almeno una ricorrenza del carattere precedente il segno + è obbligatoria. Andare alla ricerca di obbbiettivo non ha molto senso, ma alcune espressioni gergali possono effettivamente essere trascritte mediante forme sgrammaticate: si pensi all'ormai comune evvai, che reso ancor più enfatico diventa evvvvai.

Usando invece il carattere * (asterisco) al posto del carattere +, si indica che la presenza del carattere precedente non è obbligatoria: può esserci e può non esserci. Riprendendo il primo esempio, la stringa di ricerca ob*i viene individuata anche in poiana.

Combinando il carattere . con il carattere * si impone che può esservi qualunque carattere per un numero imprecisato di ricorrenze o anche nessuno. Per esempio, la stringa ob.*i viene individuata in obbligato e in obiezione, anche in obbrobrioso.

Come puoi dedurre dall'ultimo esempio, l'espressione regolare .* è traditrice: non essendoci limite al numero di caratteri che possono trovarsi tra quelli iniziali e quelli finali, la stringa ob.*i viene individuata anche nel testo obbedienti furono condotti ai campi. Nel caso che una stringa si trovi all'interno di una stringa più lunga, è quest'ultima che viene individuata dall'operazione di ricerca.

Per specificare il numero di ripetizioni del carattere devi usare le parentesi graffe. In esse, separati da una virgola, inserisci il numero di ricorrenze minimo e il numero di ricorrenze massimo. Per esempio, la stringa di ricerca ev{2,4}ai trova evvai, evvvai, evvvvai; non trova invece evaievvvvvai.

Inserendo nelle parentesi graffe un numero solo, si specifica il numero esatto di ricorrenze del carattere che precede le parentesi stesse. La stringa di ricerca ev{2}ai equivale in buona sostanza a evvai e, a ben guardare, non si vede il motivo per cui usare una sintassi più complessa di quella che effettua una ricerca letterale; tuttavia ciò è utile nel caso di espressioni regolari complesse, come in alcuni degli esempi che corredano l'articolo.

Come faccio a specificare che le stringhe di testo cercate si devono trovare all'inizio o alla fine di un paragrafo o di una parola?

  • Tipo di corrispondenza: posizionale
  • Caratteri speciali: ^ (accento circonflesso), $ (dollaro), \< (barra retroversa, minore), \> (barra retroversa, maggiore)

Per trovare i paragrafi che iniziano con una particolare parola si usa il carattere ^ (accento circonflesso), che va preposto alla stringa di ricerca. Per esempio, per trovare il testo per solo quando è usato all'inizio di un paragrafo, occorre usare la stringa di ricerca ^per. Nota che questa stringa di ricerca trova anche i paragrafi che iniziano con pertanto, con peraltro e così via. Poiché, se nella finestra Trova e sostituisci di LibreOffice si attiva la casella Espressioni regolari, la casella Solo parole intere viene disattivata, per indicare che la stringa cercata dev'essere considerata una parola intera bisogna inserire gli appositi caratteri speciali descritti poco più avanti.

Per trovare invece i paragrafi che terminano con una stringa specifica, devi posporre alla stringa il carattere $ (dollaro). Per indicare che la stringa specificata dev'essere una parola intera, si devono anche in questo caso inserire gli appositi carattere speciali.

Se vuoi trovare i paragrafi che terminano con un punto (sono la maggior parte), devi inserire questo carattere nella stringa di ricerca. Il punto è però un carattere speciale delle espressioni regolari (indica un carattere qualunque, che però deve essere presente), perciò non è ad esempio possibile usare la stringa di ricerca fare.$ per trovare il testo fare. posto alla fine del paragrafo.

Per indicare che un carattere speciale deve essere interpretato in senso letterale e non come strumento di un'espressione regolare, devi farlo precedere dal carattere \ (barra retroversa). La stringa di ricerca fare\.$ funziona perciò alla perfezione per trovare le ricorrenze di fare. che si trovano al termine di un paragrafo chiuso da un punto; ciò vale anche nel caso di a capo forzato.

Allo stesso modo, le combinazioni di caratteri \< (barra retroversa, minore) e \> (barra retroversa, maggiore) indicano che la stringa cercata deve trovarsi all'inizio di una parola o alla fine di essa.

Per esempio, la stringa di ricerca \<pere trova perenne ma non saperesperequazione. La stringa pere\> trova invece sapere, ma non perennesperequazione.

È utile sottolineare che LibreOffice considera parole intere quelle porzioni di testo delimitate da uno spazio, da un segno di sottolineatura, da una tabulazione, da un ritorno a capo forzato, da un a capo e da qualunque carattere non alfanumerico, compresa la a commerciale (cioè la chiocciola).

Come faccio a trovare le parti del testo in cui compare o una parola data o un'altra parola data?

  • Tipo di corrispondenza: alternativa
  • Caratteri: | (barra verticale), [^-] (parentesi quadre, per inserire i caratteri in alternativa tra loro e, opzionalmente, il carattere speciale di accento circonflesso e il carattere speciale di trattino)

Supponi di dover rivedere il testo di un libro che parla di calcio e di dover trovare tutti i punti in cui si parla delle squadre di Milano. Anziché fare due ricerche letterali (una con Milan e l'altra con Inter), puoi usare l'espressione regolare Milan|Inter.

Poiché però la squadra nerazzurra può essere anche citata come Internazionale, è opportuno utilizzare tre alternative e, per evitare che vengano trovate corrispondenze anche con Milano o con interno, inserire i caratteri che indichino le stringhe come parti terminali di una parola: Milan\>|Inter\>|Internazionale. In questo modo vengono trovate tutte le parole intere che corrispondono o a Milan o a Inter o a Internazionale. A ben guardare, Internazionale non è indicata come parola intera, ma nella lingua italiana non esistono parole più lunghe che contengano Internazionale, perciò tale specificazione è in questo caso inutile.

Se le alternative non riguardano le parole intere, ma solo un carattere che può però assumere diversi valori ben specificati, allora puoi usare le parentesi quadre, indicando in esse i caratteri alternativi. Per esempio la stringa di ricerca c[ao]sa trova accasato e cosa, ma non cisalpinoaccusato. La stringa di ricerca c[aou ]sa trova anche accusato.

Per indicare rapidamente un intervallo alfabetico o numerico di caratteri puoi usare il segno (trattino). Per esempio, [b-p] indica tutti i caratteri alfabetici tra b e p; perciò la stringa di ricerca ba[b-p]ca trova baccano, balcanico, bancario, ma non sobbarcabasca. La stringa di ricerca ba[b-ps]ca trova anche basca, ma non sobbarca: la r, pur essendo precedente alla s, è fuori dall'intervallo indicato. La stringa di ricerca ba[b-ps ]ca trova anche la bimba cadde, in quanto lo spazio è uno dei caratteri indicati nelle alternative di ricerca.

Gli intervalli alfabetici sono costituiti dalle lettere a-z (cioè abcdefghijklmnopqrstuvwxyz) e quelli numerici dalle cifre 0-9 (cioè 0123456789).

Se prima dopo la parentesi quadra aperta si inserisce il carattere ^ (accento circonflesso) la ricerca viene invertita. Per esempio, la stringa di ricerca ba[^b-p]ca trova tutte le parole che tra ba e ca hanno un carattere che non è compreso tra b e p; tra le corrispondenze vi sono perciò sobbarca, basca e anche la bimba cadde; non vengono invece trovate baccano, balcanico o bancario.

Per trovare nel testo il carattere di parentesi quadra aperta o chiusa, occorre anteporre nell'espressione regolare il segno di barra retroversa, che indica che il carattere seguente deve essere oggetto di una ricerca letterale. Perciò, l'espressione regolare \] trova esattamente il carattere di parentesi quadra chiusa. Questo tipo di espressione regolare è inutile se utilizzato da solo: basterebbe una ricerca letterale; è tuttavia prezioso se usato in combinazione con un'altra espressione regolare. Per esempio, la stringa [[\]a] trova una parentesi quadra aperta oppure una parentesi quadra chiusa oppure una lettera a. Nota che la barra contraria non è necessaria davanti a una parentesi quadra aperta: non vi è possibilità di fraintendimento nella ricerca.

Come faccio a raggruppare i criteri di ricerca?

  • Caratteri speciali: () (parentesi tonde)

Le parentesi tonde possono essere usate per raggruppare i criteri di ricerca. Usate da sole, non offrono alcun vantaggio rispetto ad altri tipi di espressioni regolari, ma usate in combinazione con alcune di esse permettono di effettuare ricerche più profonde ed efficaci.

Per esempio, la stringa di ricerca (sotto)?sterzo trova tutte le ricorrenze di sterzo e di sottosterzo. L'espressione regolare (sotto)? indica infatti che la stringa sotto può essere presente o può essere assente; l'opzionalità è data dal punto interrogativo.

Per trovare anche le ricorrenze di sovrasterzo, basta usare un'altra delle espressioni regolari già viste: (sotto|sovra)?sterzo. In questo caso, viene trovato sterzo, sottosterzo e sovrasterzo.

Se invece non inserisci il punto interrogativo e usi l'espressione (sotto|sovra)sterzo, viene trovato sottosterzo e sovrasterzo ma non sterzo.

La potenza delle parentesi tonde si dispiega con i cosiddetti backreference, termine che si potrebbe tradurre con retroriferimenti, per quanto non esista ancora un vocabolo italiano né ufficiale né d'uso comune.

Come faccio a riutilizzare nella stessa espressione regolare i criteri di ricerca raggruppati?

  • Caratteri speciali: \x (barra retroversa e numero), $x (dollaro e numero)

Per loro natura, i risultati ottenuti mediante l'uso di parentesi tonde vengono considerati riferimenti, cioè oggetti cui è possibile fare riferimento in futuro. È perciò possibile fare riferimento ai risultati della ricerca all'interno dell'espressione regolare stessa, usando i backreference.

Senza entrare nel merito del significato (è solo un esempio che parla di una pianta candida, di un riccio un po' maiale, di un riccio candido e di una pianta porcellona), considera la frase: Contemplava il bianco biancospino e il porco porcospino, senza degnare d'uno sguardo il bianco porcospino né il porco biancospino. Volendo individuare solo le ricorrenze in cui l'aggettivo corrisponde alla prima parte del nome, si può usare l'espressione regolare (bianco|porco) \1spino, che impone le seguenti regole:

  • trova le ricorrenze o di bianco o di porco (bianco|porco)
  • che siano seguite da uno spazio (lo spazio tra la parentesi chiusa e la barra retroversa)
  • che siano seguite dalla stressa stringa testuale trovata dalla ricerca effettuata mediante il primo gruppo di parentesi tonde (\1)
  • che sia seguita dalla stringa spino (spino)

Nel caso dell'esempio, l'espressione regolare (bianco|porco) \1spino trova bianco biancospino e porco porcospino, ma non bianco porcospinoporco biancospino.

Va sottolineato che l'espressione \1 significa “qualunque corrispondenza trovata mediante il primo gruppo di parentesi tonde” e che, nel caso dell'esempio, vale o bianco o porco.

La notazione \x può essere usata solo nella casella Trova. I backreference (a differenza di quasi tutte le espressioni regolari) possono essere usati anche nella casella Sostituisci, ma in questo caso il carattere di barra retroversa deve essere sostituito dal carattere di dollaro.

Per esempio, considera la frase: “Il Maopensiero si fonda sulle questioni politiche, mentre il Gandipensiero è incentrato su quelle etiche ed escatologiche; il Siffredipensiero è invece rivolto ai piccoli tuberi”. Ovviamente, la frase non ha alcun significato serio e serve solo a descrivere il funzionamento delle espressioni regolari. Inserendo nella casella Cerca l'espressione (Mao|Gandi|Siffredi)(pensiero ) e nella casella Sostituisci con l'espressione $2di $1 , facendo attenzione a inserire anche uno spazio sia dopo di sia dopo $1, impartisci le seguenti istruzioni:

  • trova tutte le parole che iniziano o con Mao o con Gandi o con Siffredi (primo gruppo di parentesi tonde) e che terminano con pensiero (secondo gruppo di parentesi tonde)
  • sostituiscile con una stringa che contenga dapprima il secondo gruppo di parentesi tonde, poi di e poi il secondo gruppo di parentesi tonde, con gli spazi opportuni

Il risultato è la frase: “Il pensiero di Mao si fonda sulle questioni politiche, mentre il pensiero di Gandi è incentrato su quelle etiche ed escatologiche; il pensiero di Siffredi è invece rivolto ai piccoli tuberi”.

Inserendo nella casella Sostituisci l'espressione regolare $0, viene riportata l'intera stringa trovata, qualunque essa sia e indipendentemente dal numero di gruppi di parentesi tonde da cui è formata.

A proposito di tabulazioni, di a capi e di paragrafi

Il carattere di tabulazione è identificato mediante l'espressione regolare \t. Se nella casella Cerca viene immessa la stringa \tirato, vengono individuate le ricorrenze della parola irato precedute da una tabulazione.

La differenza tra un a capo e un a capo forzato è che il primo (inserito mediante il tasto Invio) porta il testo a capo e inizia un nuovo paragrafo, mentre il secondo (inserito mediante la combinazione Maiusc+Invio) porta il testo a capo senza iniziare un nuovo paragrafo. I due caratteri sono mostrati in modo diverso in Writer: basta attivare la visualizzazione dei segni di formattazione (Visualizza → Segni di formattazione) per rendersene conto. La diversa funzione dei due codici è rilevante soprattutto quando si usano gli stili: per esempio, se imponi che ogni paragrafo abbia un po' di aria da quello che lo precede, la creazione di un nuovo paragrafo lascia un po' di spazio bianco tra l'ultima riga del paragrafo precedente e la prima di quello nuovo, mentre l'a capo forzato no.

Per trovare i codici di a capo forzato si usa l'espressione regolare \n. Questa regola vale però solo per la casella Trova. Se inserita nella casella Sostituisci, la stringa \n indica invece un ritorno a capo normale, come mostrato nella figura seguente.

Insieme con il testo sono mostrati in azzurro i caratteri di formattazioneClicca per ingrandire

Questi criteri di ricerca e sostituzione sembrano strampalati (ed effettivamente mandano a quel paese il mito della rigorosità del software libero). Nel dialetto di LibreOffice significano che ogni carattere di ritorno a capo forzato deve essere sostituito con un carattere di a capo semplice, cioè di nuovo paragrafo.

Per trovare invece un carattere di a capo bisogna inserire invece nella casella Cerca il simbolo del dollaro $. Ricordando che il carattere di accento circonflesso indica che la stringa seguente si deve trovare all'inizio di paragrafo, è facile intuire che la stringa ^$ individua perciò tutti i paragrafi senza testo, cioè le righe vuote.

Le espressioni con parentesi quadre POSIX

In teoria, LibreOffice supporta le espressioni con parentesi quadre POSIX (chiamate anche classi di carattere POSIX), o per lo meno alcune di esse. Si tratta di espressioni regolari caratterizzate dall'essere racchiuse tra parentesi quadre e tra segni di due punti (come [:alpha:]), che permettono di indicare il tipo di stringa da cercare: una cifra, un carattere stampabile, una stringa alfanumerica e via dicendo.

Purtroppo il supporto di LibreOffice a questo tipo di espressioni regolari non è molto coerente con lo standard ed è facile ottenere risultati inadeguati. Poiché le classi di carattere fondamentali possono essere sostituite in LibreOffice dalla notazione normale delle espressioni regolari (per esempio, ([:digit:]) può essere sostituita da [0-9]), è conveniente rinunciare alle espressioni con parentesi quadre POSIX.

Ricerche sfiziose

Qui di seguito sono riportati alcuni esempi di ricerche particolari, ma che possono essere utili soprattutto a chi scrive di mestiere.

Parole con un dato numero di lettere

\<.{numero}\>

Con numero uguale a un numero qualunque, trova tutte le parole costituite da numero lettere. Per esempio, \<.{8}\> trova le parole formate da otto lettere.

Parole con almeno un dato numero di lettere

[a-z]{numero,}

Con numero uguale a un numero qualunque, trova tutte le parole costituite da numero lettere o più. Per esempio, [a-z]{8,} trova le parole formate da almeno otto lettere. Quiz: perché non si può usare questa notazione per trovare le parole con un dato numero di lettere, semplicemente eliminando la virgola?

Parole ripetute

\<(.*)\> \<(\1)\>

Trova parole uguali uguali scritte due volte di seguito. Si noti che lo spazio in mezzo alla stringa di ricerca è necessario; in alternativa, si può usare la notazione \<(.*)\>[:space:]\<(\1)\> (vedi il paragrafo relativo alle classi POSIX).

Palindromi

\<(.)(.)(.).\3\2\1\>

Trova parole palindrome, che possono cioè essere lette indifferentemente anche partendo da sinistra; per esempio, anilina e onorarono sono palindromi. È necessario specificare il numero di lettere del palindromo. Per le parole con un numero dispari di lettere si inseriscono tanti raggruppamenti (le parentesi tonde con un punto) quante sono le lettere della prima parte della parola e si inseriscono poi altrettanti backreference, con un punto tra i raggruppamenti e i backreference. Per le parole con un numero pari di lettere, si procede in modo analogo ma si elimina il punto centrale. La stringa di ricerca dell'esempio trova i palindromi di sette lettere.

Indirizzi email

\<[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}\>

Trova la maggior parte degli indirizzi di posta elettronica, purché espressi in forma mnemonica. Non trova gli indirizzi numerici.

Codici fiscali

\<[a-z]{6}[0-9]{2}[a-z][0-9]{2}[a-z][0-9]{3}[a-z]\>

Trova i codici fiscali italiani.

Date da MM/GG/AAAA a GG/MM/AAAA

([0-1]?[0-9])/([0-3]?[0-9])/([0-2]?[0-9]?[0-9][0-9])

Trova le date espresse nel formato americano MM/GG/AAAA, anche quando il giorno o il mese hanno una cifra sola e se l'anno ha meno di quattro cifre.

Per convertire la data nel formato europeo GG/MM/AAAA è sufficiente inserire l'espressione $2/$1/$3 nella casella Sostituisci.

La stringa di ricerca non può nulla contro le date scritte in modo sbagliato: il blando controllo sul numero massimo inserito in alcuni raggruppamenti non mette al riparo da concordanze improprie, poiché le prime cifre possono anche essere assenti.

Approfondimenti

Puoi ricercare nella guida in linea di LibreOffice ciò che riguarda le espressioni regolari. Ti consiglio la procedura seguente.

  1. Dall'interno di LibreOffice, premi F1 o impartisci il comando Aiuto → Guida di LibreOffice
  2. Nella casella Indice, scrivi regol (esattamente così); nell'elenco degli articoli che si trova sotto la casella Indice appaiono le pagine con il materiale relativo alle espressioni regolari, suddivise per applicazione.

Crediti e riconoscimenti

Questo articolo è stato pubblicato in un'altra era sulle pagine di Linux Pro, rivista con la quale ho collaborato per diversi anni e che tuttora seguo con piacere. Posso pubblicarlo (con alcuni aggiornamenti) sul mio sito grazie agli accordi con l'editore.

 

 


Sostieni i miei studi: fai una donazione

A quasi sessant'anni, ho deciso di iscrivermi all'università. Facendo il calcolo di quanto mi costa (tra tasse accademiche, esami, libri di testo, spostamenti, tempo tolto alla professione eccetera), iscrivermi è una pazzia. Ma una voce interiore mi dice di farlo.

Perciò faccio fiducia a questa voce interiore (sperando che non si tratti del primo segno di un crollo psicotico) e cerco di dare il meglio di me. Tu però puoi aiutarmi: puoi infatti sostenere i miei studi facendo una donazione, per la quale scegli tu l'importo: dai 5 euro in su è tutto ben accetto. Ciò mi permetterà di finanziare almeno in parte i miei studi e di continuare a dedicare del tempo al mio blog con argomenti che spero utili.

PayPal ti premette di fare una donazione anche se non hai un conto PayPal: puoi infatti usare la tua carta di credito o di debito, senza alcuna commissione aggiuntiva (se non quelle della tua banca).

Puoi fare la donazione cliccando sul link o inquadrando il QR Code: scegli tu la procedura che ti è più semplice.

Se non sei pratico, leggi le istruzioni su come fare la donazione

Per prima cosa, clicca sull'immagine del link diretto o su quella del QR Code: portano entrambe alla pagina delle donazioni di PayPal.

Schermata della finestra di PayPal per le donazioni, con le istruzioni

Quando appare la finestra per le donazioni, scrivi direttamente l'importo che vuoi donare: basta iniziare a scrivere, perché l'importo sostituisce automaticamente gli zeri iniziali.

Puoi anche decidere di aggiungere una piccola percentuale, pari alle commissioni che io pago a PayPal, e far sì che sul mio conto arrivi l'importo pieno.

Inoltre puoi selezionare la casella che rende mensile la tua donazione. Stai molto attento a questa casella: per me è molto importante sapere che posso contare ogni mese sul tuo sostegno, ma astieniti se non sei ben certo di ciò che stai facendo.

Al termine della donazione, puoi inviarmi un messaggio: fallo se vuoi comunicarmi qualcosa a cui tieni.

Segui il link

Libri antichi e un paio di occhiali: link diretto alla pagina delle donazioni. Sostieni i miei studi!

 Inquadra il codice QR

Codice QR per la donazione per sostenere i miei studi

Se vuoi saperne di più su sulla mia laurea, leggi il mio articolo Ho deciso di prendere la laurea (e tu puoi aiutarmi).


 

 

Il sistema dei commenti è di CComment

Questo è il sito web personale di Claudio Romeo

Codice fiscale: RMOPQL63E17F205B

Puoi usare liberamente le informazioni qui riportate, ma solo se citi la fonte
Il copia e incolla non è invece permesso: se hai dubbi, scrivimi.