Classi di caratteri
Aggiornamento: novembre 2007
Una classe di caratteri rappresenta un set di caratteri che possono corrispondere a una stringa di input. Combinare caratteri letterali, caratteri di escape e classi di caratteri per formare un criterio di espressioni regolari.
Le classi di caratteri definiscono set di caratteri. Alcune classi di caratteri equivalgono a uno o più valori di categorie generali Unicode o a blocchi Unicode. Una categoria generale Unicode definisce la classificazione generica di un carattere, ovvero se il carattere è un tipo di lettera, una cifra decimale, un separatore, un simbolo matematico, un carattere di punteggiatura e così via. La categoria generale Lu ad esempio rappresenta "Letter, Uppercase" e la categoria Sm rappresenta "Symbol, Math". Per ulteriori informazioni, vedere Categorie generali Unicode supportate.
Un blocco Unicode è un intervallo denominato di punti di codice Unicode. .NET Framework fornisce un set di blocchi denominati che deriva dai nomi di blocchi Unicode. In .NET Framework è disponibile ad esempio il blocco denominato IsBasicLatin che corrisponde al blocco Unicode Basic Latin e che contiene caratteri compresi tra U+0000 e U+007F. Per ulteriori informazioni, vedere Blocchi denominati supportati.
.NET Framework supporta espressioni di sottrazione di classi di caratteri che consentono di definire un set di caratteri come risultato dell'esclusione di una classe di caratteri da un'altra classe di caratteri. Per ulteriori informazioni, vedere Sottrazione di classi di caratteri.
Sintassi delle classi di caratteri
Nella tabella riportata di seguito vengono riassunte le classi di caratteri e la relativa sintassi.
Classe di caratteri |
Descrizione |
---|---|
[gruppo_caratteri] |
Gruppo di caratteri positivi. Corrisponde a qualsiasi carattere compreso nel gruppo di caratteri specificato. Il gruppo di caratteri è costituito da uno o più caratteri letterali, caratteri di escape, intervalli di caratteri o classi di caratteri concatenate. Per specificare ad esempio tutte le vocali, utilizzare [aeiou]. Per specificare tutta la punteggiatura e le cifre decimali, utilizzare il codice [\p{P}\d]. |
[^gruppo_caratteri] |
Gruppo di caratteri negativi. Corrisponde a qualsiasi carattere non compreso nel gruppo di caratteri specificato. Il gruppo di caratteri è costituito da uno o più caratteri letterali, caratteri di escape, intervalli di caratteri o classi di caratteri concatenate. L'accento circonflesso iniziale (^) è obbligatorio e indica che il gruppo di caratteri è un gruppo di caratteri negativi anziché un gruppo di caratteri positivi. Per specificare ad esempio tutti i caratteri eccetto le vocali, utilizzare [^aeiou]. Per specificare tutti i caratteri eccetto la punteggiatura e le cifre decimali, utilizzare [^\p{P}\d]. |
[primoCarattere-ultimoCarattere] |
Intervallo di caratteri. Corrisponde a un carattere di un intervallo di caratteri. Un intervallo di caratteri è una serie contigua di caratteri definita specificando il primo carattere della serie, un trattino (-) e quindi l'ultimo carattere della serie. Due caratteri sono contigui se hanno punti di codice Unicode adiacenti. Due o più intervalli di caratteri possono essere concatenati. Per specificare ad esempio l'intervallo di cifre decimali comprese tra '0' e '9', l'intervallo di lettere minuscole comprese tra 'a' e 'f' e l'intervallo di lettere maiuscole comprese tra 'A' e 'F', utilizzare [0-9a-fA-F]. |
. |
Carattere punto. Corrisponde a qualsiasi carattere ad eccezione di \n. Se viene modificato con l'opzione Singleline, un carattere punto corrisponde a qualsiasi carattere. Per ulteriori informazioni vedere Opzioni di espressioni regolari. Un carattere punto in un gruppo di caratteri positivi o negativi (un punto racchiuso tra parentesi quadre) viene interpretato come carattere punto letterale e non come classe di caratteri. |
\p{nome} |
Corrisponde a un carattere di un blocco denominato o della categoria generale Unicode specificato da nome, ad esempio Ll, Nd, Z, IsGreek e IsBoxDrawing. |
\P{nome} |
Corrisponde a un carattere non incluso nel blocco denominato o nella categoria generale Unicode specificato in nome. |
\w |
Corrisponde a qualsiasi carattere alfabetico. Equivale alle categorie di caratteri Unicode [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Se viene specificato il comportamento compatibile con ECMAScript tramite l'opzione ECMAScript, \w equivale a [a-zA-Z_0-9]. |
\W |
Corrisponde a qualsiasi carattere non alfabetico. Equivale alle categorie di caratteri Unicode [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Se viene specificato il comportamento compatibile con ECMAScript tramite l'opzione ECMAScript, \W equivale a [^a-zA-Z_0-9]. |
\s |
Corrisponde a qualsiasi carattere di spazio. Equivale alle sequenze di escape e alle categorie generali Unicode [\f\n\r\t\v\x85\p{Z}]. Se viene specificato il comportamento compatibile con ECMAScript tramite l'opzione ECMAScript, \s equivale a [ \f\n\r\t\v]. |
\S |
Corrisponde a qualsiasi carattere diverso da uno spazio. Equivale alle sequenze di escape e alle categorie generali Unicode [^\f\n\r\t\v\x85\p{Z}]. Se viene specificato il comportamento compatibile con ECMAScript tramite l'opzione ECMAScript, \S equivale a [^ \f\n\r\t\v]. |
\d |
Corrisponde a qualsiasi cifra decimale. Equivale a \p{Nd} per Unicode e a [0-9] per il comportamento ECMAScript non Unicode. |
\D |
Corrisponde a qualsiasi carattere non numerico. Equivale a \P{Nd} per Unicode e a [^0-9] per il comportamento ECMAScript non Unicode. |
Categorie generali Unicode supportate
In Unicode sono definite le categorie generali e le descrizioni elencate nella tabella riportata di seguito. Per ulteriori informazioni, vedere le sezioni relative al formato di file UCD e ai valori delle categorie generali in Database dei caratteri Unicode (informazioni in lingua inglese).
Categoria |
Nome completo |
---|---|
Lu |
Letter, Uppercase |
Ll |
Letter, Lowercase |
Lt |
Letter, Titlecase |
Lm |
Letter, Modifier |
Lo |
Letter, Other |
Mn |
Mark, Nonspacing |
Mc |
Mark, Spacing Combining |
Me |
Mark, Enclosing |
Nd |
Number, Decimal Digit |
Nl |
Number, Letter |
No |
Number, Other |
Pc |
Punctuation, Connector |
Pd |
Punctuation, Dash |
Ps |
Punctuation, Open |
Pe |
Punctuation, Close |
Pi |
Punctuation, Initial quote (può comportarsi come Ps o Pe a seconda dell'utilizzo) |
Pf |
Punctuation, Final quote (può comportarsi come Ps o Pe a seconda dell'utilizzo) |
Po |
Punctuation, Other |
Sm |
Symbol, Math |
Sc |
Symbol, Currency |
Sk |
Symbol, Modifier |
So |
Symbol, Other |
Zs |
Separator, Space |
Zl |
Separator, Line |
Zp |
Separator, Paragraph |
Cc |
Other, Control |
Cf |
Other, Format |
Cs |
Other, Surrogate |
Co |
Other, Private Use |
Cn |
Other, Not Assigned (nessun carattere ha questa proprietà) |
.NET Framework fornisce categorie aggiuntive che rappresentano un set di categorie di caratteri Unicode, come mostrato nella tabella riportata di seguito.
Categoria |
Descrizione |
---|---|
C |
(Tutti i caratteri di controllo) Cc, Cf, Cs, Co e Cn. |
L |
(Tutte le lettere) Lu, Ll, Lt, Lm e Lo. |
M |
(Tutti i contrassegni diacritici) Mn, Mc e Me. |
N |
(Tutti i numeri) Nd, Nl e No. |
P |
(Tutta la punteggiatura) Pc, Pd, Ps, Pe, Pi, Pf e Po. |
S |
(Tutti i simboli) Sm, Sc, Sk e So. |
Z |
(Tutti i separatori) Zs, Zl e Zp. |
Blocchi denominati supportati
.NET Framework fornisce i blocchi denominati elencati nella tabella riportata di seguito. Il set di blocchi denominati supportati è basato su Unicode 4.0 e Perl 5.6.
Intervallo di punti di codice |
Nome del blocco |
---|---|
0000 - 007F |
IsBasicLatin |
0080 - 00FF |
IsLatin-1Supplement |
0100 - 017F |
IsLatinExtended-A |
0180 - 024F |
IsLatinExtended-B |
0250 - 02AF |
IsIPAExtensions |
02B0 - 02FF |
IsSpacingModifierLetters |
0300 - 036F |
IsCombiningDiacriticalMarks |
0370 - 03FF |
IsGreek -oppure- IsGreekandCoptic |
0400 - 04FF |
IsCyrillic |
0500 - 052F |
IsCyrillicSupplement |
0530 - 058F |
IsArmenian |
0590 - 05FF |
IsHebrew |
0600 - 06FF |
IsArabic |
0700 - 074F |
IsSyriac |
0780 - 07BF |
IsThaana |
0900 - 097F |
IsDevanagari |
0980 - 09FF |
IsBengali |
0A00 - 0A7F |
IsGurmukhi |
0A80 - 0AFF |
IsGujarati |
0B00 - 0B7F |
IsOriya |
0B80 - 0BFF |
IsTamil |
0C00 - 0C7F |
IsTelugu |
0C80 - 0CFF |
IsKannada |
0D00 - 0D7F |
IsMalayalam |
0D80 - 0DFF |
IsSinhala |
0E00 - 0E7F |
IsThai |
0E80 - 0EFF |
IsLao |
0F00 - 0FFF |
IsTibetan |
1000 - 109F |
IsMyanmar |
10A0 - 10FF |
IsGeorgian |
1100 - 11FF |
IsHangulJamo |
1200 - 137F |
IsEthiopic |
13A0 - 13FF |
IsCherokee |
1400 - 167F |
IsUnifiedCanadianAboriginalSyllabics |
1680 - 169F |
IsOgham |
16A0 - 16FF |
IsRunic |
1700 - 171F |
IsTagalog |
1720 - 173F |
IsHanunoo |
1740 - 175F |
IsBuhid |
1760 - 177F |
IsTagbanwa |
1780 - 17FF |
IsKhmer |
1800 - 18AF |
IsMongolian |
1900 - 194F |
IsLimbu |
1950 - 197F |
IsTaiLe |
19E0 - 19FF |
IsKhmerSymbols |
1D00 - 1D7F |
IsPhoneticExtensions |
1E00 - 1EFF |
IsLatinExtendedAdditional |
1F00 - 1FFF |
IsGreekExtended |
2000 - 206F |
IsGeneralPunctuation |
2070 - 209F |
IsSuperscriptsandSubscripts |
20A0 - 20CF |
IsCurrencySymbols |
20D0 - 20FF |
IsCombiningDiacriticalMarksforSymbols -oppure- IsCombiningMarksforSymbols |
2100 - 214F |
IsLetterlikeSymbols |
2150 - 218F |
IsNumberForms |
2190 - 21FF |
IsArrows |
2200 - 22FF |
IsMathematicalOperators |
2300 - 23FF |
IsMiscellaneousTechnical |
2400 - 243F |
IsControlPictures |
2440 - 245F |
IsOpticalCharacterRecognition |
2460 - 24FF |
IsEnclosedAlphanumerics |
2500 - 257F |
IsBoxDrawing |
2580 - 259F |
IsBlockElements |
25A0 - 25FF |
IsGeometricShapes |
2600 - 26FF |
IsMiscellaneousSymbols |
2700 - 27BF |
IsDingbats |
27C0 - 27EF |
IsMiscellaneousMathematicalSymbols-A |
27F0 - 27FF |
IsSupplementalArrows-A |
2800 - 28FF |
IsBraillePatterns |
2900 - 297F |
IsSupplementalArrows-B |
2980 - 29FF |
IsMiscellaneousMathematicalSymbols-B |
2A00 - 2AFF |
IsSupplementalMathematicalOperators |
2B00 - 2BFF |
IsMiscellaneousSymbolsandArrows |
2E80 - 2EFF |
IsCJKRadicalsSupplement |
2F00 - 2FDF |
IsKangxiRadicals |
2FF0 - 2FFF |
IsIdeographicDescriptionCharacters |
3000 - 303F |
IsCJKSymbolsandPunctuation |
3040 - 309F |
IsHiragana |
30A0 - 30FF |
IsKatakana |
3100 - 312F |
IsBopomofo |
3130 - 318F |
IsHangulCompatibilityJamo |
3190 - 319F |
IsKanbun |
31A0 - 31BF |
IsBopomofoExtended |
31F0 - 31FF |
IsKatakanaPhoneticExtensions |
3200 - 32FF |
IsEnclosedCJKLettersandMonths |
3300 - 33FF |
IsCJKCompatibility |
3400 - 4DBF |
IsCJKUnifiedIdeographsExtensionA |
4DC0 - 4DFF |
IsYijingHexagramSymbols |
4E00 - 9FFF |
IsCJKUnifiedIdeographs |
A000 - A48F |
IsYiSyllables |
A490 - A4CF |
IsYiRadicals |
AC00 - D7AF |
IsHangulSyllables |
D800 - DB7F |
IsHighSurrogates |
DB80 - DBFF |
IsHighPrivateUseSurrogates |
DC00 - DFFF |
IsLowSurrogates |
E000 - F8FF |
IsPrivateUse |
F900 - FAFF |
IsPrivateUseArea |
FB00 - FB4F |
IsCJKCompatibilityIdeographs |
FB50 - FDFF |
IsAlphabeticPresentationForms |
FE00 - FE0F |
IsArabicPresentationForms-A |
FE20 - FE2F |
IsVariationSelectors |
FE30 - FE4F |
IsCombiningHalfMarks |
FE50 - FE6F |
IsCJKCompatibilityForms |
FE70 - FEFF |
IsSmallFormVariants |
FF00 - FFEF |
IsArabicPresentationForms-B |
FFF0 - FFFF |
IsHalfwidthandFullwidthForms |
Sottrazione di classi di caratteri
Una classe di caratteri definisce un set di caratteri. La sottrazione di classi di caratteri produce un set di caratteri che è il risultato dell'esclusione dei caratteri di una classe di caratteri da un'altra classe di caratteri.
Un'espressione di sottrazione di classi di caratteri ha il formato seguente:
[gruppo_base-[gruppo_escluso]]
Le parentesi quadre ([]) e il trattino (-) sono obbligatori. Il gruppo_base è un gruppo di caratteri positivi o negativi descritto nella tabella Sintassi delle classi di caratteri. Il componente gruppo_escluso è un altro gruppo di caratteri positivi o negativi o un'altra espressione di sottrazione di classi di caratteri, ovvero è possibile nidificare espressioni di sottrazione di classi di caratteri.
Si supponga ad esempio di disporre di un gruppo di base costituito dall'intervallo di caratteri compresi tra 'a' e 'z'. Per definire il set di caratteri che è costituito dal gruppo di base eccetto il carattere 'm', utilizzare [a-z-[m]]. Per definire il set di caratteri che è costituito dal gruppo di base eccetto il set di caratteri 'd', 'j' e 'p', utilizzare [a-z-[djp]]. Per definire il set di caratteri che è costituito dal gruppo di base eccetto l'intervallo di caratteri compresi tra 'm' e 'p', utilizzare [a-z-[m-p]].
Si consideri l'espressione di sottrazione di classi di caratteri nidificata [a-z-[d-w-[m-o]]]. L'espressione viene valutata partendo dall'intervallo di caratteri più interno verso quello più esterno. Innanzitutto, l'intervallo di caratteri compresi tra 'm' e 'o' viene sottratto dall'intervallo di caratteri compresi tra 'd' e 'w', producendo il set di caratteri compresi tra 'd' e 'l' e tra 'p' e 'w'. Questo set viene quindi sottratto dall'intervallo di caratteri compresi tra 'a' e 'z', producendo il set di caratteri [abcmnoxyz].
È possibile utilizzare qualsiasi classe di caratteri con sottrazione di classi di caratteri. Per definire il set di caratteri che è costituito da tutti i caratteri Unicode compresi tra \u0000 e \uFFFF eccetto i caratteri di spazio (\s), i caratteri nella categoria generale punteggiatura (\p{P}), i caratteri nel blocco denominato IsGreek (\p{IsGreek}) e il carattere di controllo NEXT LINE Unicode (\x85), utilizzare [\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]].
Scegliere le classi di caratteri per un'espressione di sottrazione di classi di caratteri che produrrà risultati utili. Evitare espressioni che producono set di caratteri vuoti, che non hanno corrispondenze o che equivalgono al gruppo di base originale. Il set vuoto ad esempio è il risultato dell'espressione [\p{IsBasicLatin}-[\x00-\x7F]], che sottrae tutti i caratteri dalla categoria generale IsBasicLatin. Analogamente, il gruppo di base originale è il risultato dell'espressione [a-z-[0-9]]. Questo è dovuto al fatto che il gruppo di base, ovvero l'intervallo di caratteri compresi tra 'a' e 'z', non contiene alcun carattere del gruppo escluso, che è l'intervallo di caratteri di cifre decimali comprese tra '0' e '9'.
Si noti che per le espressioni regolari di uno schema XML è previsto un supporto simile per la sottrazione di classi di caratteri.
Vedere anche
Riferimenti
Opzioni di espressioni regolari