Show Menu
ARGOMENTI×

Espressioni regolari

Un aggiornamento relativo alla sintassi e alle regole per la creazione di espressioni regolari.
Sintassi delle espressioni regolari
Testo
Qualsiasi carattere singolo
[caratteri]
Classe carattere: Uno dei caratteri
[^chars]
Classe carattere: Nessuno dei caratteri
text1|text2
Alternativa: text1 o text2
Quantificatori
?
0 o 1 del testo precedente
*
0 o N del testo precedente (N > 1)
+
1 o N del testo precedente (N > 1)
Raggruppamento
(testo)
Raggruppamento di testo, per impostare i bordi di un'alternativa o per ripristinare i riferimenti quando il nth group viene utilizzato sull'RHS di una regola di riscrittura con $N)
Ancoraggi
^
Inizio dell'ancoraggio della linea.
$
Ancoraggio fine linea.
Sfuggita
\char
Esc il carattere particolare. Ad esempio, per specificare i caratteri ".[] ()" e così via.
Regole sulle espressioni regolari
  • Un carattere ordinario, non uno dei caratteri speciali descritti di seguito, è un'espressione regolare con un carattere che corrisponde a se stessa.
  • Una barra rovesciata (\) seguita da qualsiasi carattere speciale è un'espressione regolare di un carattere che corrisponde al carattere speciale stesso. I caratteri speciali includono quanto segue:
    • . (punto), * (asterisco), ? (punto interrogativo), + (segno più), [ (parentesi quadre sinistra), | (barra verticale) e \ (barra rovesciata) sono sempre caratteri speciali, tranne quando compaiono tra parentesi quadre.
    • ^ (caret o cirflex) è speciale all'inizio di un'espressione regolare, o quando segue immediatamente la sinistra di una coppia di parentesi quadre.
    • $ (simbolo del dollaro) è speciale alla fine di un'espressione regolare.
    • . (punto) è un'espressione regolare con un carattere che corrisponde a qualsiasi carattere, inclusi i caratteri set di codici supplementari ad eccezione di nuova riga.
    • Una stringa di caratteri non vuota racchiusa tra parentesi quadre [ ] (sinistra e destra) è un'espressione regolare di un carattere che corrisponde a un carattere nella stringa, inclusi i caratteri del set di codici supplementari.
      Se, tuttavia, il primo carattere della stringa è una ^ (cirflex), l'espressione regolare di un carattere corrisponde a qualsiasi carattere, inclusi i caratteri set di codici supplementari, ad eccezione di nuova riga e dei caratteri rimanenti nella stringa.
      Questo ^ ha un significato speciale solo se si verifica per la prima volta nella stringa. È possibile utilizzare - (segno meno) per indicare un intervallo di caratteri consecutivi, inclusi i caratteri del set di codici supplementari. Ad esempio, # equivale a #.
      I caratteri che specificano l'intervallo devono provenire dallo stesso set di codici. Quando i caratteri provengono da set di codici diversi, uno dei caratteri che specifica l’intervallo corrisponde. Questo - ^ significato speciale viene perso se si verifica prima (dopo l'eventuale iniziale) o dopo l'ultima nella stringa. La ] (parentesi quadre destra) non termina con una stringa di questo tipo quando si tratta del primo carattere al suo interno, dopo un'eventuale ^ parentesi iniziale. Ad esempio, []a-f] corrisponde a una ] (parentesi quadre destra) o a una delle lettere ASCII da a a f incluso. I quattro caratteri elencati come caratteri speciali sopra si trovano all'interno di una tale stringa di caratteri.
Regole per la creazione di espressioni regolari da espressioni regolari con un carattere
Per creare espressioni regolari a partire da espressioni regolari a un carattere, è possibile utilizzare le regole seguenti:
  • Un'espressione regolare con un carattere è un'espressione regolare che corrisponde a qualsiasi corrispondenza dell'espressione regolare con un carattere.
  • Un'espressione regolare di un carattere seguita da un * (asterisco) è un'espressione regolare che corrisponde a zero o più occorrenze dell'espressione regolare di un carattere, che può essere un carattere set di codici supplementare. In caso di scelta, viene scelta la stringa più a sinistra che consente la corrispondenza.
  • Un'espressione regolare di un carattere seguita da un ? (punto interrogativo) è un'espressione regolare che corrisponde a zero o a una occorrenza dell'espressione regolare di un carattere, che può essere un carattere set di codici supplementare. In caso di scelta, viene scelta la stringa più a sinistra che consente la corrispondenza.
  • Un'espressione regolare di un carattere seguita da un segno + (più) è un'espressione regolare che corrisponde a una o più occorrenze dell'espressione regolare di un carattere, che può essere un carattere set di codici supplementare. In caso di scelta, viene scelta la stringa più a sinistra che consente la corrispondenza.
  • Un'espressione regolare con un carattere seguita da {m} , {m,} o {m,n} è un'espressione regolare che corrisponde a un intervallo di occorrenze dell'espressione regolare con un carattere. i valori di m e n devono essere numeri interi non negativi inferiori a 256; {m} corrisponde esattamente a m occorrenze; {m,} corrisponde ad almeno m occorrenze; {m,n} corrisponde a qualsiasi numero di occorrenze tra m e n incluso. Ogni volta che esiste una scelta, l'espressione regolare corrisponde al maggior numero possibile di occorrenze.
  • La concatenazione di espressioni regolari è un'espressione regolare che corrisponde alla concatenazione delle stringhe corrispondenti a ciascun componente dell'espressione regolare.
  • Un'espressione regolare racchiusa tra le sequenze di caratteri ( e ) è un'espressione regolare che corrisponde a qualsiasi corrispondenza dell'espressione regolare non adornata.
  • Un'espressione regolare seguita da una | (barra verticale) seguita da un'espressione regolare è un'espressione regolare che corrisponde alla prima espressione regolare (prima della barra verticale) o alla seconda espressione regolare (dopo la barra verticale).
È inoltre possibile vincolare un'espressione regolare affinché corrisponda solo a un segmento iniziale o finale di una linea, oppure a entrambi.
  • Un'espressione ^ (cirflex) all'inizio di un'espressione regolare vincola tale espressione regolare a corrispondere a un segmento iniziale di una riga.
  • Un $ (simbolo del dollaro) alla fine di un'intera espressione regolare vincola tale espressione regolare a corrispondere a un segmento finale di una riga.
  • La costruzione ^regolare espressione$ vincola l'espressione regolare a corrispondere all'intera riga.
Esistono nomi predefiniti di classi di caratteri utilizzabili al posto di complesse espressioni regolari raggruppate. Ad esempio, una cifra può essere rappresentata dall'espressione regolare di un carattere # o dall'espressione regolare di un carattere della classe di caratteri [ #].
Le classi di caratteri predefinite e il relativo significato sono i seguenti:
Classe carattere
Significato
[[:alnum:]]
Un carattere alfabetico o una cifra.
[[:alpha:]]
Un carattere alfabetico.
[[:vuoto:]]
Uno spazio o una scheda.
[[:cntrl:]]
un codice di controllo; carattere non stampabile.
[[:cifra:]]
Una cifra.
[[:graph:]]
Qualsiasi carattere di stampa tranne lo spazio.
[[:lower:]]
Un carattere alfabetico minuscolo.
[[:print:]]
Qualsiasi carattere di stampa, incluso lo spazio.
[[:punct:]]
Punteggiatura.
[[:space:]]
Spazio vuoto, ad esempio uno spazio, una scheda o un'estremità della riga.
[[:high:]]
Un carattere alfabetico maiuscolo.
[[:xcifra:]]
Una cifra esadecimale, maiuscola o minuscola.
Due nomi di classe di caratteri speciali corrispondono allo spazio null all'inizio e alla fine di una parola. In altre parole, non corrispondono a un carattere effettivo. Una parola è considerata una sequenza di caratteri alfabetici, numeri o caratteri di sottolineatura (_).
Classe carattere
Significato
[[:<:]]
inizio di una parola
[[:>:]]
fine di una parola