Classes de Caracteres
Uma classe de caracteres representa um conjunto de caracteres que pode fazer a correspondência entre uma sequência de caracteres de entrada.Combina caracteres literais, caracteres de escape e classes de caracteres para formar uma expressão regular padrão.
Classes de caracteres definem um conjuntos de caracteres.Algumas classes de caracteres são equivalentes a um ou mais valores da categoria geral Unicode ou blocos Unicode.Uma categoria Unicode geral define a abrangente classificação de um caractere; ou seja, se o caractere é tipo letra, dígito decimal, separador, símbolo matemático, pontuação e assim por diante.Por exemplo, a categoria geral Lu representa "Letra, Maiúscula" e a categoria Smrepresenta "Símbolo, Matemática".Para obter mais informações, consulte Categorias Suportadas Unicode Geral .
Um bloco Unicode é um intervalo nomeado pontos de código Unicode.O .NET Framework fornece um conjunto de blocos nomeados com nomes derivados de blocos Unicode.Por exemplo, o .NET Framework fornece o bloco nomeado IsBasicLatinque corresponde ao bloco Basic Latin e contém caracteres Unicode desde U + 0000 a U + 007F.Para obter mais informações, consulte Blocos Nomeados Suportados .
O .NET Framework suporta classe caractere subtração de expressões, que permite a você definir um conjunto de caracteres como resultado de exclusão de uma classe de caractere de outra classe de caractere.Para obter mais informações, consulte Classe de Caractere Subtração .
Sintaxe da Classe de Caractere
A tabela a seguir resume as classes de caracteres e sua sintaxe.
Classe de caractere |
Descrição |
---|---|
[character_group] |
(Caractere positivo grupo). Correponde o caractere especificado com qualquer caractere grupo. O caractere grupo consiste em um ou mais caracteres literais, caracteres escape,caracteres intervalo ou classes de caracteres que são concatenados. Por exemplo, para especificar todas as vogais, use [aeiou]. Para especificar todos os caracteres dígito decimal, use o código [\p{P}\d] e pontuação. |
[^character_group] |
(Caractere grupo negativo). Correponde qualquer caractere não especificado no caractere grupo. O caractere grupo consiste em um ou mais caracteres literais, caracteres escape,caracteres intervalo ou classes de caracteres que são concatenados.O caractere à esquerda circunflexo (^)é obrigatório e indica que o caractere grupo é um caractere grupo negativo no lugar de um caractere grupo positivo. Por exemplo, para especificar todos os caracteres, exceto as vogais, use [^aeiou]. To specify all characters except punctuation and decimal digit characters, use [^\p{P}\d]. |
[firstCharacter-lastCharacter] |
Intervalos de Caracteres Corresponde qualquer caractere a um intervalo de caracteres. Um intervalo de caracteres é uma série contígua de caracteres definidos, especificando o primeiro caractere na série, um hífen (-) , e o último caractere na série.Dois caracteres são contíguos se eles tiverem pontos de código Unicode adjacentes.Dois ou mais intervalos de caracteres podem ser concatenados. Por exemplo, para especificar o intervalo de dígitos de ' 0 ' a '9', o intervalo de letras minúsculas de 'a ' a ' f' e o intervalo de letras maiúsculas 'a ' a' f', use [0-9a-fA-F]. |
. |
(O caractere periódico.) Corresponde qualquer caractere, exceto \n .Se modificado pela opção Singleline, um caractere ponto corresponde a qualquer caractere.Para obter mais informações, consulte Opções de Expressões Regulares. Note que um caractere periódico em um caractere grupo positivo ou negativo (um periodo dentro de colchetes) é tratado como um caractere literal peródico e não uma classe caractere. |
\p {nome} |
Corresponde qualquer caractere na categoria geral Unicode ou bloco nomeado especificado por Name (por exemplo, Ll,Nd,Z,IsGreek e IsBoxDrawing). |
\P {nome} |
Corresponde qualquer caractere que não está na categoria geral Unicode ou bloco nomeado especificada em Nome . |
\w |
Corresponde qualquer caractere palavra.Equivalente as categorias [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}] Unicode gerais.Se estiver ECMAScript-compatível com o comportamento especificado com a opção ECMAScript,\w é equivalente a [a-zA-Z_0-9]. |
\W |
Corresponde qualquer caractere que não seja palavra.Equivalente as categorias [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}] Unicode gerais.Se for especificado comportamento compatível com ECMAScript com o ECMAScript opção, \W é equivalente a [^a-zA-Z_0-9]. |
\s |
Corresponde qualquer caractere de espaço em branco.Equivalente as categorias gerais Unicode de sequências de escape[\f\n\r\t\v\x85\p{Z}].If ECMAScript-compliant behavior is specified with the ECMAScript option, \s is equivalent to [ \f\n\r\t\v]. |
\S |
Corresponde qualquer caractere de espaço em branco.Equivalente as categorias gerais Unicode de sequências de escape[^\f\n\r\t\v\x85\p{Z}].If ECMAScript-compliant behavior is specified with the ECMAScript option, \S is equivalent to [^ \f\n\r\t\v]. |
\d |
Corresponde qualquer dígito decimal.Equivalente a \p{Nd} para Unicode e [0-9] para não Unicode, comportamento ECMAScript. |
\D |
Correspode qualquer caractere não dígito.Equivalente a \P{Nd} para Unicode e [^0-9] para não Unicode, comportamento ECMAScript. |
Categorias Suportadas Unicode gerais
Unicode define as categorias gerais e descrições listadas na tabela a seguir.Para obter mais informações, consulte os subtópicos de "Formato de arquivo UCD" e "Valores de categoria geral" noBanco de dados de caractere Unicode.
Category (Categoria) |
Descrição |
---|---|
Lu |
Letra, Maiúsculas |
Ll |
Letra, Minúsculas |
Lt |
Letra, Título |
Lm |
Letra, Modificador |
Lo |
Letra, Outro |
Mn |
Marcar, Não espaçado |
Mc |
Marca, Espaçamento Combinando |
Me |
Marcar, Confinar |
Nd |
Número, Dígito Decimal |
Nl |
Número, Letra |
No |
Número, Outros |
Pc |
Pontuação, Conectores |
Pd |
Pontuação, Tracejado |
Ps |
Pontuação, Abrir |
Pe |
Pontuação, Fechar |
Pi |
Pontuação, Aspas Iniciais (talvez se comportem como Ps ou Pe, dependendo do uso) |
Pf |
Pontuação, Aspas Finais (talvez se comportem como Ps ou Pe, dependendo do uso) |
Po |
Pontuação, Outros |
Sm |
Símbolo, Matemática |
Sc |
Símbolo, Moeda |
Sk |
Símbolo, Modificador |
So |
Símbolo, Outros |
Zs |
Separador, Espaço |
Zl |
Separador, Linha |
Zp |
Separador, Parágrafo |
Cc |
Outro, Controle |
Cf |
Outro, Formatar |
Cs |
Outro, Substituir |
Co |
Outros, uso Particular |
Cn |
Outros, Não Atribuídos (nenhum caractere têm esta propriedade) |
A .NET Framework fornece outras categorias que representam um conjunto de categorias de caracteres Unicode, conforme mostrado na tabela a seguir.
Category (Categoria) |
Representa |
---|---|
C |
(Todos os caracteres de controle) Cc, Cf, Cs, Co e Cn. |
L |
(Todas as letras) Lu, Ll, Lt, Lm e Lo. |
M |
(Todas as marcas diacrítico) Mn, Mc e Me. |
N |
(Todos os números) Nd, Nl e No. |
P |
(Todas Pontuações) Pc, Pd, Ps, Pe, Pi), Pf, e Po. |
S |
(Todos os números) Sm, Sc e Sk, eSo. |
Z |
(Todos os separadores) Zs, Zl e Zp. |
Blocos Nomeados Suportados
A .NET Framework fornece os blocos nomeados listados na tabela a seguir.O conjunto de blocos nomeados suportados é baseado na Unicode 4.0 e Perl 5.6.
Intervalo de ponto de código |
Nome do bloco |
---|---|
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 |
097F - 0900 |
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 |
Subtração de classe de caractere
Uma classe de caractere define um conjunto de caracteres.A subtração de classe de caractere fornece um conjunto de caracteres que é o resultado da exclusão dos caracteres em uma classe de caractere a partir de outra classe de caractere.
A subtração de classe de caractere tem a seguinte forma:
[base_group-[excluded_group ]]
Os colchetes ([]) e hífen (-) são obrigatórios.O grupo_base é um grupo de caracteres positivo ou negativo conforme descrito na tabela Sintaxe de Classes de Caracteres.O componente grupo_excluído é outro grupo de caracteres positivo ou negativo, ou outra expressão de subtração de classe de caracteres (ou seja, você pode aninhar expressões de subtração classe de caractere).
Por exemplo, suponha que você tenha um grupo base que consiste no intervalo de caracteres de 'A ' a ' Z'.Para definir o conjunto de caracteres do qual o grupo base consiste, exceto pelo caractere 'm', utilize[a-z-[m]].Para definir o conjunto de caracteres do qual o grupo base consiste, exceto pelo conjunto de caracteres 'd', 'j', e 'p', utilize [a-z-[djp]].Para definir o conjunto de caracteres do qual o grupo base consiste, exceto pelo intervalo de 'm' a 'p', utilize [a-z-[m-p]].
Considere a expressão de subtração de classe de caractere aninhada, [a-z-[d-w-[m-o]]].A expressão é calculada do intervalo de caractere mais interno para fora.Primeiro, o intervalo de caracteres de 'm' a 'o' é subtraído do intervalo de caractere de 'd' a 'w', o que produz o conjunto de caracteres de 'd' a 'l' e 'p' por' w'.Esse conjunto, em seguida, é subtraído do intervalo de caracteres de 'a ' a ' z', que produz o conjunto de caracteres, [abcmnoxyz].
Você pode usar qualquer classe de caractere com subtração de classes de caractere.Para definir o conjunto de caracteres que consiste em todos os caracteres Unicode de \u0000 através de \uFFFF exceto caracteres de espaço em branco (\s), os caracteres no (categoria geral de pontuação\p{P}), os caracteres a IsGreek () nomeado bloco\p{IsGreek}), e use o caractere de controle Unicode NEXT linha (\x85) [\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]].
Escolha classes de caracteres para uma expressão de subtração de classes de caractere que produzirá resultados utéis.Evite uma expressão que gere um conjunto de caracteres vazio, que não podem corresponder a nada, ou uma expressão que é equivalente ao grupo base original.Por exemplo, o conjunto vazio é o resultado da expressão [\p{IsBasicLatin}-[\x00-\x7F]], que subtrai todos os caracteres da categoria geral IsBasicLatin.Da mesma forma, o grupo base original é o resultado da expressão [a-z-[0-9]].Isso ocorre porque o grupo base, que é o intervalo de caracteres de letras de 'a ' a 'z', não contém quasquer caracteres no grupo excluído, que é o intervalo de caracteres de dígitos de ' 0 ' a '9'.
Observe que Expressões regulares Esquema XML possui suporte semelhante para subtração de classes de caractere.
Consulte também
Referência
Opções de expressões regulares