Classes de caractères
Mise à jour : novembre 2007
Une classe de caractères représente un jeu de caractères qui peuvent correspondre à une chaîne d'entrée. Associez des caractères littéraux, des caractères d'échappement et des classes de caractères pour former un modèle d'expression régulière.
Les classes de caractères définissent des jeux de caractères. Certaines classes de caractères équivalent à un ou plusieurs blocs Unicode ou valeurs de catégories générales Unicode. Une catégorie générale Unicode définit la classification générale d'un caractère ; autrement dit, elle détermine si le caractère est un type de lettre, de chiffre décimal, de séparateur, de symbole mathématique, de ponctuation, etc. Par exemple, la catégorie générale Lu représente "Letter, Uppercase" et la catégorie Sm représente "Symbol, Math". Pour plus d'informations, consultez Catégories générales Unicode prises en charge.
Un bloc Unicode est une plage nommée de points de code Unicode. Le .NET Framework fournit un jeu de blocs nommés dérivé des noms de blocs Unicode. Par exemple, le .NET Framework fournit le bloc nommé IsBasicLatin qui correspond au bloc Unicode Basic Latin et contient des caractères allant de U+0000 à U+007F. Pour plus d'informations, consultez Blocs nommés pris en charge.
Le .NET Framework prend en charge les expressions de soustraction de classe de caractères, ce qui vous permet de définir un jeu de caractères comme résultat de l'exclusion d'une classe de caractères d'une autre classe de caractères. Pour plus d'informations, consultez Soustraction de classe de caractères.
Syntaxe de classe de caractères
Le tableau suivant résume les classes de caractères et leur syntaxe.
Classe de caractères |
Description |
---|---|
[groupe_caractères] |
(Groupe de caractères positif.) Correspond à l'un des caractères du groupe de caractères spécifié. Le groupe de caractères se compose d'un ou de plusieurs caractères littéraux, caractères d'échappement, plages de caractères ou classes de caractères concaténés. Par exemple, pour spécifier toutes les voyelles, utilisez [aeiou].. Pour spécifier tous les caractères de ponctuation et les chiffres décimaux, codez [\p{P}\d]. |
[^groupe_caractères] |
(Groupe de caractères négatif.) Correspond à un caractère n'appartenant pas au groupe de caractères spécifié. Le groupe de caractères se compose d'un ou de plusieurs caractères littéraux, caractères d'échappement, plages de caractères ou classes de caractères concaténés. Le premier caractère (^) est obligatoire et indique que le groupe de caractères est un groupe de caractères négatif et non positif. Par exemple, pour spécifier tous les caractères sauf les voyelles, utilisez [^aeiou]. Pour spécifier tous les caractères sauf la ponctuation et les chiffres décimaux, utilisez [^\p{P}\d]. |
[PremierCaractère-DernierCaractère] |
(Plage de caractères.) Correspond à l'un des caractères d'une plage de caractères. Une plage de caractères est une série contiguë de caractères définie par la spécification du premier caractère dans la série, d'un trait d'union (-), puis du dernier caractère dans la série. Deux caractères sont contigus s'ils présentent des points de code Unicode adjacents. Deux ou plusieurs plages de caractères peuvent être concaténées. Par exemple, pour spécifier la plage de chiffres décimaux de '0' à '9', la plage de lettres minuscules de 'a' à 'f' et la plage de lettres majuscules de 'A' à 'F', utilisez [0-9a-fA-F]. |
. |
(Caractère point.) Correspond à tout caractère sauf \n. S'il est modifié par l'option Singleline, un caractère point correspond à tout caractère. Pour plus d'informations, consultez Options des expressions régulières. Notez qu'un caractère point dans un groupe de caractères positif ou négatif (un point entre crochets) est traité comme un caractère point littéral, et non une classe de caractères. |
\p{nom} |
Correspond à l'un des caractères de la catégorie générale Unicode ou du bloc nommé spécifié par nom (par exemple, Ll, Nd, Z, IsGreek et IsBoxDrawing). |
\P{nom} |
Correspond à un caractère n'appartenant pas à la catégorie générale Unicode ou au bloc nommé spécifié dans nom. |
\w |
Correspond à n'importe quel caractère alphabétique. Équivalent aux catégories générales Unicode [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Si le comportement conforme ECMAScript est spécifié avec l'option ECMAScript, \w est équivalent à [a-zA-Z_0-9]. |
\W |
Représente n'importe quel caractère non alphabétique. Équivalent aux catégories générales Unicode [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Si le comportement conforme ECMAScript est spécifié avec l'option ECMAScript, \W est équivalent à [^a-zA-Z_0-9]. |
\s |
Correspond à tout caractère espace blanc. Équivalent aux séquences d'échappement et aux catégories générales Unicode [\f\n\r\t\v\x85\p{Z}]. Si le comportement conforme ECMAScript est spécifié avec l'option ECMAScript, \s est équivalent à [ \f\n\r\t\v]. |
\S |
Correspond à tout caractère autre qu'un espace blanc. Équivalent aux séquences d'échappement et aux catégories générales Unicode [^\f\n\r\t\v\x85\p{Z}]. Si le comportement conforme ECMAScript est spécifié avec l'option ECMAScript, \S est équivalent à [^ \f\n\r\t\v]. |
\d |
Correspond à n'importe quel chiffre décimal. Équivalent à \p{Nd} en caractères Unicode et à [0-9] en caractères non-Unicode, comportement ECMAScript. |
\D |
Correspond à un caractère ne représentant pas un chiffre. Équivalent à \P{Nd} en caractères Unicode et à [^0-9] en caractères non-Unicode, comportement ECMAScript. |
Catégories générales Unicode prises en charge
Unicode définit les catégories générales et les descriptions répertoriées dans le tableau suivant. Pour plus d'informations, consultez les sous-rubriques « UCD File Format » et « General Category Values » dans Unicode Character Database.
Catégorie |
Description |
---|---|
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 (peut se comporter comme Ps ou Pe selon l'utilisation) |
Pf |
Punctuation, Final quote (peut se comporter comme Ps ou Pe selon l'utilisation) |
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 (aucun caractère n'a cette propriété) |
Le .NET Framework fournit des catégories supplémentaires qui représentent un jeu de catégories de caractères Unicode, comme indiqué dans le tableau suivant.
Catégorie |
Représente |
---|---|
C |
(Tous les caractères de contrôle) Cc, Cf, Cs, Co et Cn. |
L |
(Toutes les lettres) Lu, Ll, Lt, Lm et Lo. |
M |
(Toutes les marques diacritiques) Mn, Mc et Me. |
N |
(Tous les nombres) Nd, Nl et No. |
P |
(Tous les signes de ponctuation) Pc, Pd, Ps, Pe, Pi, Pf et Po. |
S |
(Tous les symboles) Sm, Sc, Sk et So. |
Z |
(Tous les séparateurs) Zs, Zl et Zp. |
Blocs nommés pris en charge
Le .NET Framework fournit les blocs nommés répertoriés dans le tableau suivant. Le jeu de blocs nommés pris en charge est basé sur Unicode 4.0 et Perl 5.6.
Plage de points de code |
Nom du bloc |
---|---|
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 - ou - 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 - ou - 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 |
Soustraction de classe de caractères
Une classe de caractères définit un jeu de caractères. La soustraction de classe de caractères produit un jeu de caractères qui est le résultat de l'exclusion des caractères dans une classe de caractères d'une autre classe de caractères.
Une expression de soustraction de classe de caractères a la forme suivante :
[groupe_base-[groupe_exclu]]
Les crochets ([]) et le trait d'union (-) sont obligatoires. groupe_base est un groupe de caractères positif ou négatif, comme indiqué dans le tableau Syntaxe de classe de caractères. Le composant groupe_exclu est un autre groupe de caractères positif ou négatif ou une autre expression de soustraction de classe de caractères (autrement dit, vous pouvez imbriquer des expressions de soustraction de classe de caractères).
Par exemple, supposons que vous disposez d'un groupe de base composé de la plage de caractères allant de 'a' à 'z'. Pour définir le jeu de caractères composé du groupe de base, à l'exception du caractère 'm', utilisez [a-z-[m]]. Pour définir le jeu de caractères composé du groupe de base, à l'exception du jeu de caractères 'd', 'j' et 'p', utilisez [a-z-[djp]]. Pour définir le jeu de caractères composé du groupe de base, à l'exception de la plage de caractères allant de 'm' à 'p', utilisez [a-z-[m-p]].
Considérez l'expression de soustraction de classe de caractères imbriquée, [a-z-[d-w-[m-o]]]. L'expression est évaluée à partir de la plage de caractères la plus interne, vers l'extérieur. Tout d'abord, la plage de caractères 'm' à 'o' est soustraite de la plage de caractères 'd' à 'w', produisant le jeu de caractères 'd' à 'l' et 'p' à 'w'. Ce jeu est ensuite soustrait de la plage de caractères allant de 'a' à 'z', produisant le jeu de caractères [abcmnoxyz].
Vous pouvez utiliser n'importe quelle classe de caractères avec la soustraction de classe de caractères. Pour définir le jeu de caractères qui se compose de tous les caractères Unicode de \u0000 à \uFFFF, à l'exception des espaces blancs (\s), des caractères de la catégorie générale de ponctuation (\p{P}), des caractères du bloc nommé IsGreek (\p{IsGreek}) et du caractère de contrôle LIGNE SUIVANTE Unicode (\x85), utilisez [\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]].
Choisissez des classes de caractères pour une expression de soustraction de classe de caractères qui produira des résultats utiles. Évitez toute expression produisant un jeu de caractères vide, n'ayant aucune correspondance ou toute expression équivalant au groupe de base d'origine. Par exemple, le jeu vide résulte de l'expression [\p{IsBasicLatin}-[\x00-\x7F]] qui soustrait tous les caractères de la catégorie générale IsBasicLatin. De même, le groupe de base d'origine résulte de l'expression [a-z-[0-9]]. Cela est dû au fait que le groupe de base, c'est-à-dire la plage de caractères des lettres de 'a' à 'z', ne contient aucun caractère dans le groupe exclu, c'est-à-dire la plage de caractères des chiffres décimaux de '0' à '9'.
Notez que les expressions régulières de schéma XML a une prise en charge semblable de la soustraction de classe de caractères.
Voir aussi
Référence
Options des expressions régulières