Classi di caratteri regex
Costrutti classe di caratteri
Una classe di caratteri consente di specificare un insieme di caratteri, racchiusi tra parentesi quadre, in grado di produrre una corrispondenza di un singolo carattere. Una classe di caratteri corrisponde a un solo carattere. Ad esempio,
gr[ae]y
corrisponderà a gray
o grey
, ma non per graay
o graey
. L'ordine dei caratteri all'interno delle parentesi non ha importanza.È possibile utilizzare un trattino all'interno di una classe di caratteri per specificare un intervallo di caratteri. Esempio:
[a-z]
corrisponde a una singola lettera minuscola tra a
e z
. È anche possibile utilizzare più di un intervallo o una combinazione di intervalli e singoli caratteri. Esempio: [0-9X]
corrisponde a una cifra o alla lettera X
. L'ordine dei caratteri e degli intervalli non ha importanza.Un punto di inserimento dopo una parentesi aperta specifica i caratteri da escludere da una corrispondenza. Ad esempio,
[^abc]
corrisponde a qualsiasi carattere tranne a
, b
, o c
.Costruisci | Tipo | Descrizione |
|---|---|---|
[
abc ] | Semplice | Corrispondenze a o b o c
|
[^abc]
| Negazione | Corrisponde a qualsiasi carattere tranne a o b o c
|
[a-zA-Z]
| Intervallo | Corrispondenze a attraverso z , o A attraverso Z (compreso) |
[a-d[m-p]]
| Sindacato | Corrispondenze a attraverso d , o m attraverso p
|
[a-z&&[def]]
| Intersezione | Corrispondenze d , e , o f
|
[a-z&&[^xq]]
| Sottrazione | Corrispondenze a attraverso z , ad eccezione di x e q
|
Classi di caratteri predefinite
Le classi di caratteri predefinite sono pratiche abbreviazioni per le espressioni regolari di uso comune.
Costruisci | Descrizione | Esempio |
|---|---|---|
.
| Corrisponde a qualsiasi carattere singolo (tranne nuova riga) | .at corrisponde a "cat", "hat" e anche "bat" nella frase "batch files" |
\d
| Corrisponde a qualsiasi carattere (equivalente a [0-9] ) | \d corrisponde a "3" in "C3PO" e "2" in "file_2.txt" |
\D
| Corrisponde a qualsiasi carattere diverso da una cifra (equivalente a [^0-9] ) | \D corrisponde a "S" in "900S" e "Q" in "Q45" |
\s
| Corrisponde a qualsiasi singolo carattere di spazio vuoto (equivalente a [ \t\n\x0B\f\r] ) | \sbook corrisponde a "libro" in "libro blu" ma non corrisponde a "quaderno" |
\S
| Corrisponde a qualsiasi singolo carattere diverso da spazi vuoti | \Sbook corrisponde a "libro" in "notebook" ma non corrisponde a "libro blu" |
\w
| Corrisponde a qualsiasi carattere alfanumerico, incluso il carattere di sottolineatura (equivalente a [A-Za-z0-9_] ) | r\w* corrisponde a "rm" e "root" |
\W
| Corrisponde a qualsiasi carattere non alfanumerico (equivalente a [^A-Za-z0-9_] ) | \W corrisponde a "&" in "stmd &", "%" in "100%" e "$" in "$HOME" |
Classi di caratteri POSIX (US-ASCII)
POSIX ha un insieme di classi di caratteri che indicano determinati intervalli comuni. Sono simili alle classi di caratteri parentesi e predefinite, tranne per il fatto che tengono conto delle impostazioni internazionali (lingua locale/sistema di codifica).
Costruisci | Descrizione |
|---|---|
\p{Lower}
| Un carattere alfabetico minuscolo [a-z]
|
\p{Upper}
| Un carattere alfabetico maiuscolo [A-Z]
|
\p{ASCII}
| Un carattere ASCII, [\x00-\x7F]
|
\p{Alpha}
| Un carattere alfabetico, [a-zA-z]
|
\p{Digit}
| Una cifra numerica [0-9]
|
\p{Alnum}
| Un carattere alfanumerico [a-zA-z0-9]
|
\p{Punct}
| Un carattere di punteggiatura, uno di !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
|
\p{Graph}
| Un carattere visibile [\p{Alnum}\p{Punct}]
|
\p{Print}
| Un carattere stampabile, [\p{Graph}\x20]
|
\p{Blank}
| Uno spazio o una tabulazione [ t]
|
\p{Cntrl}
| Un carattere di controllo [\x00-\x1F\x7F]
|
\p{XDigit}
| Una cifra esadecimale [0-9a-fA-F]
|
\p{Space}
| Uno spazio vuoto [ \t\n\x0B\f\r]
|