Compartir a través de


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

GetUnicodeCategory

Opciones de expresiones regulares

Otros recursos

Elementos del lenguaje de expresiones regulares