# Espressioni regolari

Espressioni regolari Segmentazione Ricerca

Le espressioni regolari (regex, in breve) ammesse per le operazioni di ricerca sono quelle riconosciute da Java. Per ulteriori e più specifiche informazioni, consultare la documentazione Java Regex. Vedere più avanti per ulteriori riferimenti ed esempi.

Questo capitolo si rivolge agli utenti avanzati, che hanno la necessità di definire le proprie varianti delle regole di segmentazione o costruire combinazioni di ricerca più complesse ed efficaci.

Regex - Flag

Il costrutto | ...corrisponde al seguente
--- | ---
(?i) | Consente di avviare una ricerca che non consideri le lettere maiuscole e minuscole (per impostazione predefinita, il modello distingue tra maiuscole e minuscole).

Regex - Carattere

Il costrutto | ...corrisponde al seguente
--- | ---
x | Viene rilevato il carattere corrispondente a x, ma con le seguenti eccezioni...
\uhhhh | Viene rilevato il carattere col valore esadecimale 0xhhhh
\t | Carattere di tabulazione ('\u0009')
\n | Carattere corrispondente a un avanzamento di riga (line feed, LF) ('\u000A')
\r | Carattere corrispondente a un ritorno di carrello (carriage-return, CR) ('\u000D')
\f | Carattere corrispondente all'inizio di una nuova pagina in una stampa (form feed) ('\u000C')
\a | Carattere di controllo bell ('\u0007')
\e | Carattere escape ('\u001B')
\cx | Carattere di controllo corrispondente a x
\0n | Carattere col valore ottale 0n (0 <= n <= 7)
\0nn | Carattere col valore ottale 0nn (0 <= n <= 7)
\0mnn | Carattere col valore ottale 0mnn (0 <= m <= 3, 0 <= n <= 7)
\xhh | Carattere col valore esadecimale 0xhh

Regex - Citazione

Il costrutto | ...corrisponde al seguente
--- | ---
\ | Nulla, se non il carattere immediatamente successivo. È necessario quando si desidera usare i metacaratteri !$()*+.<>?[\]^{|} in modo che vengano utilizzati come caratteri e non come operatori.
\\ | Per esempio, questa combinazione corrisponde al carattere della barra rovesciata (“ \ ”).
\Q | Nulla, ma indica tutti i caratteri fino a \E
\E | Nulla, ma conclude la citazione iniziata da \Q

Regex - Classi per blocchi e categorie Unicode

Il costrutto | ...corrisponde al seguente
--- | ---
\p{InGreek} | Carattere nel blocco greco ( blocco semplice)
\p{Lu} | Lettera maiuscola ( categoria semplice)
\p{Sc} | Simbolo di valuta
\P{InGreek} | Qualsiasi carattere, eccetto uno nel blocco greco (negazione)
[\p{L}&&[^\p{Lu}]] | Qualsiasi lettera, eccetto una lettera maiuscola (sottrazione)

Regex - Classi di carattere

Il costrutto | ...corrisponde al seguente
--- | ---
[abc] | a, b o c (classe semplice)
[^abc] | Qualsiasi carattere, eccetto a, b o c (negazione)
[a-zA-Z] | Da "a" a "z" o da "A" a "Z", inclusi (intervallo)

Regex - Classi di carattere predefinite

Il costrutto | ...corrisponde al seguente
--- | ---
. | Qualsiasi carattere (eccetto i terminatori di riga)
\d | Una cifra: [0-9]
\D | Un carattere non numerico: [^0-9]
\s | Un carattere di spazio bianco: [ \t\n\x0B\f\r]
\S | Un carattere che non sia uno spazio bianco: [^\s]
\w | Un carattere parola: [a-zA-Z_0-9]
\W | Un carattere non-parola: [^\w]

Regex - Rilevatori di limitazione

Il costrutto | ...corrisponde al seguente
--- | ---
^ | Inizio di una riga
$ | Fine di una riga
\b | Limite di una parola
\B | Limite di una non-parola

Regex - Quantificatori di ripetizione

Il costrutto | ...corrisponde al seguente
--- | ---
X? | X, una sola volta oppure nessuna
X* | X, zero o più volte
X+ | X, una o più volte

i quantificatori di ripetizione rileveranno tutte le ripetizioni possibili. Per esempio, a+ rileverà aaa in aaabbb

Regex - Quantificatori riluttanti (non ripetitivi)

Il costrutto | ...corrisponde al seguente
--- | ---
X?? | X, una sola volta oppure nessuna
X*? | X, zero o più volte
X+? | X, una o più volte

i quantificatori riluttanti rileveranno il minor numero di ripetizioni possibili. Per esempio, a+? rileverà la prima a in aaabbb

Regex - Operatori logici

Il costrutto | ...corrisponde al seguente
--- | ---
XY | X seguito da Y
X|Y | X oppure Y
(XY) | XY come gruppo singolo

## Strumenti per le espressioni regolari ed esempi di utilizzo

Espressioni regolari Strumenti
Espressioni regolari Esempi di utilizzo

Sono disponibili diversi strumenti interattivi dedicati allo sviluppo e alla verifica delle espressioni regolari. Essi seguono quasi tutti lo stesso schema (vedere sotto l'esempio preso dal Regular Expression Tester): l'espressione regolare (voce in alto) analizza il testo da ricercare (riquadro al centro), restituendo i risultati, mostrati nel riquadro dei risultati.

Regex Tester

Per eseguire verifiche con uno strumento indipendente, nelle versioni per Windows, Linux, Mac e FreeBSD, usare The Regex Coach. Funziona in modo quasi identico all'esempio di cui sopra.

In OmegaT è pure presente una buona raccolta di utili esempi regex (si veda Opzioni > Segmentazione). L'elenco seguente include espressioni che potrebbero risultare utili quando si eseguono ricerche attraverso la memoria di traduzione:

Regex - Esempi di espressioni regolari nelle traduzioni

Espressione regolare | Trova il seguente:
--- | ---
(\b\w+\b)\s\1\b | doppie parole
[\.,]\s*[\.,]+ | virgola o punto, seguiti da spazi e ancora un'altra virgola o punto
\. \s+$ | spazi aggiuntivi dopo un punto alla fine di una riga
\s+a\s+[aeiou] | Inglese: le parole inizianti per vocali devono essere in genere precedute da "an" e non "a"
\s+an\s+[^aeiou] | Inglese: stesso controllo di cui sopra ma per le consonanti ("a", non "an")
\s{2,} | più di uno spazio
\.[A-Z] | Punto, seguito da una lettera maiuscola - forse uno spazio mancante tra un punto e l'inizio di una nuova frase?
\bis\b | cerca “is”, non “this” o “isn't”, ecc.