Un ensemble est un jeu de caractères qui peuvent correspondre à tout caractère appartenant à cet ensemble. Les ensembles sont délimités par [ et ] et peuvent contenir des valeurs littérales, des plages de caractères, des classes de caractères, des éléments d'assemblage et des classes d'équivalence. Les déclarations d'ensemble qui commencent par ^ contiennent le complément des éléments suivants.
Exemples de valeurs littérales d'un caractère :
Exemples de plages de caractères :
Notez que les plages de caractères dépendent considérablement du langage utilisé : elles peuvent correspondre à tout caractère appartenant à la plage. Les plages obéissent uniquement aux règles ASCII lorsque le langage C est utilisé par défaut. Ainsi, si la bibliothèque est compilée avec le modèle de localisation Win32, [a-z] correspond aux caractères ASCII a-z, mais également A, B, etc., mais pas Z qui est assemblé juste après z. Vous pouvez désactiver ce comportement spécifique des paramètres régionaux en spécifiant regbase::nocollate lors de la compilation. Ce comportement correspond au comportement par défaut lorsque regbase::normal est utilisé et il contraint les plages à appliquer l'assemblage en fonction du code de caractères ASCII. En outre, si vous utilisez les fonctions API POSIX C, le paramètre REG_NOCOLLATE désactive l'assemblage par rapport au langage.
Les classes de caractères sont indiquées à l'aide de la syntaxe [:classname:] dans la déclaration d'un ensemble ; par exemple [[:space:]] correspond à l'ensemble de tous les caractères d'espace blanc. Les classes de caractères ne sont disponibles que si l'indicateur regbase::char_classes est défini. Les classes de caractères disponibles sont les suivantes :
|
alnum |
Tout caractère alphanumérique. |
|
alpha |
Tout caractère alphabétique a-z et A-Z. D'autres caractères peuvent également être inclus en fonction du langage. |
|
blank |
Tout caractère vide comme un espace ou une tabulation. |
|
cntrl |
Tout caractère de contrôle. |
|
digit |
Tout chiffre de 0 à 9. |
|
graph |
Tout caractère graphique. |
|
lower |
Tout caractère minuscule de a à z. D'autres caractères peuvent également être inclus en fonction du langage. |
|
|
Tout caractère imprimable. |
|
punct |
Tout caractère de ponctuation. |
|
space |
Tout caractère d'espace. |
|
upper |
Tout caractère majuscule de A à Z. D'autres caractères peuvent également être inclus en fonction du langage. |
|
xdigit |
Tout caractère hexadécimal de 0 à 9, de a à f et de A à F. |
|
word |
Tout caractère word (tous les caractères alphanumériques plus le trait de soulignement). |
|
unicode |
Tout caractère dont le code est supérieur à 255. Ceci s'applique aux classes de traits de caractères larges uniquement. |
Vous pouvez utiliser certains raccourcis à la place des classes de caractères, à condition de définir l'indicateur regbase::escape_in_lists :
Les éléments d'assemblage prennent la forme générale [.tagname.] dans la déclaration d'un ensemble, tagname correspondant à un seul caractère ou à un nom d'un élément d'assemblage. Par exemple, [[.a.]] est l'équivalent de [a] et [[.comma.]] de [,]. La bibliothèque prend en charge tous les autres noms d'élément d'assemblage POSIX standard, ainsi que les digrammes suivants : ae, ch, ll, ss, nj, dz, lj en minuscule, en majuscule et en initiale majuscule. Les éléments d'assemblage de plusieurs caractères peuvent avoir pour résultat que l'ensemble correspond à plusieurs caractères. Par exemple, [[.ae.]] correspond à deux caractères alors que [^[.ae.]] correspond à un seul caractère.
Les classes d'équivalence prennent la forme générale [=tagname=] dans la déclaration d'un ensemble, tagname correspondant à un seul caractère ou à un nom d'un élément d'assemblage, ainsi qu'à tout caractère appartenant à la même classe d'équivalence primaire que l'élément d'assemblage [.tagname.]. Une classe d'équivalence est un ensemble de caractères qui s'assemblent. Une classe d'équivalence primaire est un ensemble de caractères dont la clé de tri principale est identique pour tous (par exemple, les chaînes sont généralement assemblées par caractère, puis par accent, puis pas casse ; la clé de tri principale fait alors référence au caractère, la clé secondaire à l'accentuation et la clé tertiaire à la casse). En l'absence de classe d'équivalence correspondant à tagname, [=tagname=] correspond exactement à [.tagname.]. Il n'existe malheureusement aucune méthode indépendante de langage pour obtenir la clé de tri principale pour un caractère, sauf sous Win32. Pour les autres systèmes d'exploitation, la bibliothèque "devine" la clé de tri principale à partir de la clé de tri complète (obtenue à partir de strxfrm). Ainsi, les classes d'équivalences sont probablement davantage considérées comme cassées sous tout autre système d'exploitation que Win32.
Pour inclure une valeur littérale - dans la déclaration d'un ensemble, utilisez cette valeur comme premier caractère après la parenthèse droite d'ouverture [ ou [^, l'extrémité d'une plage ou un élément d'assemblage. Si l'indicateur regbase::escape_in_lists est défini, faites-la précéder d'un caractère d'échappement comme dans [\-]. Pour inclure une valeur littérale [, ] ou ^ dans un ensemble, utilisez-là comme extrémité d'une plage, un élément d'assemblage ou faites-la précéder d'un caractère d'échappement si l'indicateur regbase::escape_in_lists est défini.
|
Copyright © 2013 CA.
Tous droits réservés.
|
|