Clases de carácter
Actualización: noviembre 2007
Una clase de caracteres representa un conjunto de caracteres que pueden coincidir con una cadena de entrada. Combine caracteres literales, caracteres de escape y clases de caracteres para formar un modelo de expresión regular.
Las clases de caracteres definen conjuntos de caracteres. Algunas clases de caracteres son equivalentes a uno o varios valores de categorías generales Unicode o bloques Unicode. Una categoría general Unicode define la clasificación general de un carácter; es decir, si el carácter es un tipo de letra, un dígito decimal, un separador, un símbolo matemático, un carácter de puntuación, etc. Por ejemplo, la categoría general Lu representa "Letra, mayúscula" y la categoría Sm representa "Símbolo, matemático". Para obtener más información, vea Categorías generales Unicode compatibles.
Un bloque Unicode es un intervalo con nombre de puntos de código Unicode. .NET Framework proporciona un conjunto de bloques con nombre derivado de los nombres de bloque Unicode. Por ejemplo, .NET Framework proporciona el bloque con nombre IsBasicLatin, que corresponde al bloque Unicode Basic Latin y contiene caracteres comprendidos entre U+0000 y U+007F. Para obtener más información, vea Bloques con nombre compatibles.
.NET Framework admite expresiones de sustracción de clases de caracteres, que le permiten definir un conjunto de caracteres como el resultado de excluir una clase de caracteres de otra clase de caracteres. Para obtener más información, vea Sustracción de clases de caracteres.
Sintaxis de clase de caracteres
En la siguiente tabla se resumen las distintas clases de caracteres y su sintaxis.
Clase de carácter |
Descripción |
---|---|
[grupo_caracteres] |
(Grupo de caracteres positivo.) Coincide con cualquier carácter del grupo de caracteres especificado. El grupo de caracteres está formado por uno o varios caracteres literales, caracteres de escape, intervalos de caracteres o clases de caracteres que se concatenan. Por ejemplo, para especificar todas las vocales, utilice [aeiou]. Para especificar todos los caracteres de puntuación y dígitos decimales, escriba [\p{P}\d] en el código. |
[^grupo_caracteres] |
(Grupo de caracteres negativo.) Coincide con cualquier carácter que no se encuentre en el grupo de caracteres especificado. El grupo de caracteres está formado por uno o varios caracteres literales, caracteres de escape, intervalos de caracteres o clases de caracteres que se concatenan. El carácter de intercalación inicial (^) es obligatorio e indica que el grupo de caracteres es un grupo de caracteres negativo en lugar de un grupo de caracteres positivo. Por ejemplo, para especificar todos los caracteres salvo las vocales, utilice [^aeiou]. Para especificar todos los caracteres salvo los caracteres de puntuación y los dígitos decimales, utilice [^\p{P}\d]. |
[primerCarácter-últimoCarácter] |
(Intervalo de caracteres.) Coincide con cualquier carácter de un intervalo de caracteres. Un intervalo de caracteres es una serie contigua de caracteres que se define mediante la especificación del primer carácter de la serie, un guión (-) y, a continuación, el último carácter de la serie. Dos caracteres son contiguos si tienen puntos de código Unicode adyacentes. Es posible concatenar dos o más intervalos de caracteres. Por ejemplo, para especificar el intervalo de dígitos decimales de '0' a '9', el intervalo de letras minúsculas de 'a' a 'f' y el intervalo de letras mayúsculas de 'A' a 'F', utilice [0-9a-fA-F]. |
. |
(El carácter de punto.) Coincide con cualquier carácter excepto \n. Si se modifica por medio de la opción Singleline, un carácter de punto coincide con cualquier carácter. Para obtener más información, vea Opciones de expresiones regulares. Tenga en cuenta que un carácter de punto incluido en grupo de caracteres positivo o negativo (un punto incluido entre corchetes) se considera como un carácter de punto literal, no como una clase de caracteres. |
\p{nombre} |
Coincide con cualquier carácter de la categoría general Unicode o bloque con nombre especificado por nombre (por ejemplo, Ll, Nd, Z, IsGreek e IsBoxDrawing). |
\P{nombre} |
Coincide con cualquier carácter que no pertenezca a la categoría general Unicode o bloque con nombre especificado en nombre. |
\w |
Coincide con cualquier carácter de una palabra. Equivale a las categorías generales Unicode [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Si se especifica un comportamiento conforme a ECMAScript mediante la opción ECMAScript, \w equivale a [a-zA-Z_0-9]. |
\W |
Coincide con cualquier carácter que no pertenezca a una palabra. Equivale a las categorías generales Unicode [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Si se especifica un comportamiento compatible con ECMAScript mediante la opción ECMAScript, \W equivale a [^a-zA-Z_0-9]. |
\s |
Coincide con cualquier carácter que sea un espacio en blanco. Equivale a las secuencias de escape y a las categorías generales Unicode [\f\n\r\t\v\x85\p{Z}]. Si se especifica un comportamiento compatible con ECMAScript mediante la opción ECMAScript, \s equivale a [ \f\n\r\t\v]. |
\S |
Coincide con cualquier carácter que no sea un espacio en blanco. Equivale a las secuencias de escape y a las categorías generales Unicode [^\f\n\r\t\v\x85\p{Z}]. Si se especifica un comportamiento compatible con ECMAScript mediante la opción ECMAScript, \S equivale a [^ \f\n\r\t\v]. |
\d |
Coincide con cualquier dígito decimal. Equivale a \p{Nd} para Unicode y a [0-9] para el comportamiento ECMAScript no Unicode. |
\D |
Coincide con cualquier carácter que no sea un dígito. Equivale a \P{Nd} para Unicode y a [^0-9] para el comportamiento ECMAScript no Unicode. |
Categorías generales Unicode compatibles
Unicode define las categorías generales y descripciones que se muestran en la siguiente tabla. Para obtener más información, vea los subtemas sobre el formato de archivo UCD y los valores de las categorías generales en la base de datos de caracteres Unicode (en inglés).
Categoría |
Descripción |
---|---|
Lu |
Letra, mayúscula |
Ll |
Letra, minúscula |
Lt |
Letra, título |
Lm |
Letra, modificador |
Lo |
Letra, otra |
Mn |
Marca, sin espacios |
Mc |
Marca, espacio combinable |
Me |
Marca, cerrar |
Nd |
Número, dígito decimal |
Nl |
Número, letra |
No |
Número, otro |
Pc |
Puntuación, conector |
Pd |
Puntuación, guión |
Ps |
Puntuación, abrir |
Pe |
Puntuación, cerrar |
Pi |
Puntuación, comilla inicial (puede comportarse como Ps o Pe, en función del uso) |
Pf |
Puntuación, comilla final (puede comportarse como Ps o Pe, en función del uso) |
Po |
Puntuación, otro |
Sm |
Símbolo, matemático |
Sc |
Símbolo, moneda |
Sk |
Símbolo, modificador |
So |
Símbolo, otro |
Zs |
Separador, espacio |
Zl |
Separador, línea |
Zp |
Separador, párrafo |
Cc |
Otro, control |
Cf |
Otro, formato |
Cs |
Otro, suplente |
Co |
Otro, uso privado |
Cn |
Otro, no asignado (ningún carácter tiene esta propiedad) |
.NET Framework proporciona categorías adicionales que representan un conjunto de categorías de caracteres Unicode, tal y como se muestra en la siguiente tabla.
Categoría |
Representa |
---|---|
C |
(Todos los caracteres de control) Cc, Cf, Cs, Co y Cn. |
L |
(Todas las letras) Lu, Ll, Lt, Lm y Lo. |
M |
(Todas las marcas diacríticas) Mn, Mc y Me. |
N |
(Todos los números) Nd, Nl y No. |
P |
(Todos los signos de puntuación) Pc, Pd, Ps, Pe, Pi, Pf y Po. |
S |
(Todos los símbolos) Sm, Sc, Sk y So. |
Z |
(Todos los separadores) Zs, Zl y Zp. |
Bloques con nombre compatibles
.NET Framework proporciona los bloques con nombre que se muestra en la siguiente tabla. El conjunto de bloques con nombre compatibles está basado en Unicode 4.0 y Perl 5.6.
Intervalo de puntos de código |
Nombre de bloque |
---|---|
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 O bien, 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 O bien, 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 |
Sustracción de clases de caracteres
Una clase de caracteres define un conjunto de caracteres. La sustracción de clases de caracteres genera un conjunto de caracteres que es el resultado de excluir los caracteres de una clase de caracteres de otra clase de caracteres.
Una expresión de sustracción de clases de caracteres tiene el siguiente formato:
[grupo_base-[grupo_excluido]]
Los corchetes ([]) y el guión (-) son obligatorios. El grupo_base es un grupo de caracteres positivo o negativo, tal y como se describe en la tabla Sintaxis de clase de caracteres. El componente grupo_excluido es otro grupo de caracteres positivo o negativo, u otra expresión de sustracción de clases de caracteres (es decir, pueden anidarse expresiones de sustracción de clases de caracteres).
Por ejemplo, supongamos que tiene un grupo base formado por el intervalo de caracteres de 'a' a 'z.' Para definir el conjunto de caracteres que componen el grupo base, salvo el carácter 'm', utilice [a-z-[m]]. Para definir el conjunto de caracteres que componen el grupo base, salvo el conjunto de caracteres 'd', 'j' y 'p', utilice [a-z-[djp]]. Para definir el conjunto de caracteres que componen el grupo base, salvo el intervalo de caracteres de 'm' a 'p', utilice [a-z-[m-p]].
Considere la expresión de sustracción de clases de caracteres anidada [a-z-[d-w-[m-o]]]. La expresión se evalúa desde el intervalo de caracteres más profundo hacia el exterior. Primero, el intervalo de caracteres de 'm' a 'o' se resta del intervalo de caracteres de 'd' a 'w', lo que da como resultado el conjunto de caracteres de 'd' a 'l' y de 'p' a 'w.' A continuación, ese conjunto se resta del intervalo de caracteres de 'a' a 'z', lo que da lugar al conjunto de caracteres [abcmnoxyz].
Puede utilizar cualquier clase de caracteres con sustracción de clases de caracteres. Para definir el conjunto de caracteres formado por todos los caracteres Unicode de \u0000 a \uFFFF, a excepción de los caracteres de espacio en blanco (\s), los caracteres de la categoría general de puntuación (\p{P}), los caracteres del bloque con nombre IsGreek (\p{IsGreek}) y el carácter de control Unicode NEXT LINE (\x85), utilice [\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]].
Elija las clases de caracteres para que una expresión de sustracción de clases de caracteres produzca resultados satisfactorios. Evite el uso de expresiones que produzcan un conjunto vacío de caracteres, que no coincidan con nada, o expresiones equivalentes al grupo base original. Por ejemplo, el conjunto vacío es el resultado de la expresión [\p{IsBasicLatin}-[\x00-\x7F]], que resta todos los caracteres de la categoría general IsBasicLatin. Ocurre lo mismo con el grupo base original, que es el resultado de la expresión [a-z-[0-9]]. Esto se debe a que el grupo base, que está formado por el intervalo de caracteres comprendido entre las letras de la 'a' a la 'z', no contiene ningún carácter del grupo excluido, que es el intervalo de caracteres formado por los dígitos decimales del '0' al '9.'
Observe que Expresiones regulares de esquema XML ofrece una compatibilidad similar para la sustracción de clases de caracteres.
Vea también
Referencia
Opciones de expresiones regulares