Zeichenklassen
Aktualisiert: November 2007
Eine Zeichenklasse stellt einen Satz von Zeichen dar, die einer Eingabezeichenfolge entsprechen können. Sie kombinieren Literalzeichen, Escapezeichen und Zeichenklassen zu einem Muster für einen regulären Ausdruck.
Zeichenklassen definieren Zeichensätze. Einige Zeichenklassen entsprechen einem oder mehreren Unicode-Werten der allgemeinen Kategorie oder Unicode-Blöcken. Eine allgemeine Unicode-Kategorie definiert die umfassende Klassifikation eines Zeichens, d. h., ob es sich bei dem Zeichen dem Typ nach um einen Buchstaben, eine Dezimalziffer, ein Trennzeichen, ein mathematisches Symbol, ein Satzzeichen usw. handelt. Die allgemeine Kategorie Lu stellt beispielsweise "Letter, Uppercase" (Buchstabe, Großschreibung) dar, die Kategorie Sm steht für "Symbol, Math" (Symbol, Mathematik). Weitere Informationen finden Sie unter Unterstützte allgemeine Unicode-Kategorien.
Ein Unicode-Block ist ein benannter Bereich von Unicode-Codepunkten. .NET Framework stellt einen Satz von benannten Blöcken bereit, die aus den Unicode-Blocknamen abgeleitet wurden. So stellt .NET Framework z. B. den benannten Block IsBasicLatin bereit, der dem Unicode-Block Basic Latin entspricht und Zeichen im Bereich von U+0000 bis U+007F enthält. Weitere Informationen finden Sie unter Unterstützte benannte Blöcke.
.NET Framework unterstützt Zeichenklassensubtraktionsausdrücke. Hierdurch können Sie einen Zeichensatz definieren, der aus dem Ausschluss einer Zeichenklasse aus einer anderen Zeichenklasse resultiert. Weitere Informationen finden Sie unter Zeichenklassensubtraktion.
Zeichenklassensyntax
In der folgenden Tabelle werden die Zeichenklassen und ihre Syntax zusammengefasst.
Zeichenklasse |
Beschreibung |
---|---|
[character_group] |
(Positive Zeichengruppe.) Entspricht einem beliebigen Zeichen in der angegebenen Zeichengruppe. Die Zeichengruppe besteht aus einem oder mehreren Literalzeichen, Escapezeichen, Zeichenbereichen oder Zeichenklassen, die miteinander verkettet sind. Zum Angeben aller Vokale verwenden Sie z. B. [aeiou]. Wenn Sie die gesamte Interpunktion und alle Dezimalziffern angeben möchten, codieren Sie [\p{P}\d]. |
[^character_group] |
(Negative Zeichengruppe.) Entspricht einem beliebigen Zeichen, das sich nicht in der angegebenen Zeichengruppe befindet. Die Zeichengruppe besteht aus einem oder mehreren Literalzeichen, Escapezeichen, Zeichenbereichen oder Zeichenklassen, die miteinander verkettet sind. Das führende Zirkumflexzeichen (^) ist obligatorisch und gibt an, dass es sich bei der Zeichengruppe um eine negative und nicht um eine positive Zeichengruppe handelt. Zum Angeben aller Zeichen mit Ausnahme von Vokalen verwenden Sie z. B. [^aeiou]. Wenn Sie alle Zeichen außer Interpunktion und Dezimalziffern angeben möchten, verwenden Sie [^\p{P}\d]. |
[firstCharacter-lastCharacter] |
(Zeichenbereich.) Entspricht einem beliebigen Zeichen in einem Zeichenbereich. Ein Zeichenbereich ist eine Folge zusammenhängender Zeichen, die definiert wird, indem das erste Zeichen in der Folge, ein Bindestrich (-), und das letzte Zeichen in der Folge angegeben werden. Zwei Zeichen sind zusammenhängend, wenn sie benachbarte Unicode-Codepunkte haben. Es können zwei oder mehr Zeichenbereiche miteinander verkettet werden. Wenn Sie beispielsweise den Bereich der Dezimalziffern von '0' bis '9', den Bereich der Kleinbuchstaben von 'a' bis 'f' und den Bereich der Großbuchstaben von 'A' bis 'F' angeben möchten, verwenden Sie [0-9a-fA-F]. |
. |
(Punkt.) Entspricht allen Zeichen mit Ausnahme von \n. Bei Modifikation durch die Singleline-Option entspricht ein Punkt einem beliebigen Zeichen. Weitere Informationen hierzu finden Sie unter Optionen für reguläre Ausdrücke. Beachten Sie, dass ein Punkt in einer positiven oder negativen Zeichengruppe (Punkt in eckigen Klammern) als Literalzeichen und nicht als Zeichenklasse behandelt wird. |
\p{name} |
Entspricht einem beliebigen Zeichen in der allgemeinen Unicode-Kategorie oder einem durch name angegebenen benannten Block (z. B. Ll, Nd, Z, IsGreek und IsBoxDrawing). |
\P{name} |
Entspricht einem beliebigen Zeichen, das sich nicht in der allgemeinen Unicode-Kategorie oder einem in name angegebenen benannten Block befindet. |
\w |
Entspricht einem beliebigen Wortzeichen. Entspricht den allgemeinen Unicode-Kategorien [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Wenn mit der ECMAScript-Option ECMAScript-konformes Verhalten angegeben wurde, ist \w gleichbedeutend mit [a-zA-Z_0-9]. |
\W |
Entspricht einem beliebigen Nichtwortzeichen. Entspricht den allgemeinen Unicode-Kategorien [^\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]. Wenn mit der ECMAScript-Option ECMAScript-konformes Verhalten angegeben wurde, ist \W gleichbedeutend mit [^a-zA-Z_0-9]. |
\s |
Entspricht einem beliebigen Leerraumzeichen. Entspricht den Escapesequenzen und den allgemeinen Unicode-Kategorien [\f\n\r\t\v\x85\p{Z}]. Wenn mit der ECMAScript-Option ECMAScript-konformes Verhalten angegeben wurde, ist \s gleichbedeutend mit [ \f\n\r\t\v]. |
\S |
Entspricht einem beliebigen Nicht-Leerraumzeichen. Entspricht den Escapesequenzen und den allgemeinen Unicode-Kategorien [^\f\n\r\t\v\x85\p{Z}]. Wenn mit der ECMAScript-Option ECMAScript-konformes Verhalten angegeben wurde, ist \S gleichbedeutend mit [^ \f\n\r\t\v]. |
\d |
Entspricht einer beliebigen Dezimalziffer. Entspricht \p{Nd} für Unicode und [0-9] für Nicht-Unicode mit ECMAScript-Verhalten. |
\D |
Entspricht einer beliebigen Nichtziffer. Entspricht \P{Nd} für Unicode und [^0-9] für Nicht-Unicode mit ECMAScript-Verhalten. |
Unterstützte allgemeine Unicode-Kategorien
Unicode definiert die in der folgenden Tabelle aufgelisteten allgemeinen Kategorien und Beschreibungen. Weitere Informationen finden Sie in der Unicode-Zeichendatenbank (auf Englisch) in den untergeordneten Themen "UCD-Dateiformat" (auf Englisch) und "Werte der allgemeinen Kategorie" (auf Englisch).
Kategorie |
Beschreibung |
---|---|
Lu |
Letter, Uppercase |
Ll |
Letter, Lowercase (Buchstabe, Kleinschreibung) |
Lt |
Letter, Titlecase (Buchstabe, großer Anfangsbuchstabe) |
Lm |
Letter, Modifier (Buchstabe, Modifizierer) |
Lo |
Letter, Other (Buchstabe, andere) |
Mn |
Mark, Nonspacing (Satzzeichen, ohne horizontalen Vorschub) |
Mc |
Mark, Spacing Combining (Satzzeichen, Kombinationszeichen mit Vorschub) |
Me |
Mark, Enclosing (Satzzeichen, einschließend) |
Nd |
Number, Decimal Digit (Zahl, Dezimalziffer) |
Nl |
Number, Letter (Zahl, Buchstabe) |
No |
Number, Other (Zahl, andere) |
Pc |
Punctuation, Connector (Interpunktion, Verbindung) |
Pd |
Punctuation, Dash (Interpunktion, Bindestrich) |
Ps |
Punctuation, Open (Interpunktion, öffnend) |
Pe |
Punctuation, Close (Interpunktion, schließend) |
Pi |
Punctuation, Initial quote (Interpunktion, öffnendes Anführungszeichen; verhält sich je nach Verwendung möglicherweise wie Ps oder Pe) |
Pf |
Punctuation, Final quote (Interpunktion, schließendes Anführungszeichen; verhält sich je nach Verwendung möglicherweise wie Ps oder Pe) |
Po |
Interpunktion, Other (Interpunktion, andere) |
Sm |
Symbol, Math (Symbol, Mathematik) |
Sc |
Symbol, Currency (Symbol, Währung) |
Sk |
Symbol, Modifier (Symbol, Modifizierer) |
So |
Symbol, Other (Symbol, andere) |
Zs |
Separator, Space (Trennzeichen, Leerzeichen) |
Zl |
Separator, Line (Trennzeichen, Zeile) |
Zp |
Separator, Paragraph (Trennzeichen, Absatz) |
Cc |
Other, Control (Andere, Steuerzeichen) |
Cf |
Other, Format (Andere, Format) |
Cs |
Other, Surrogate (Andere, Ersatzzeichen) |
Co |
Other, Private Use (Andere, persönliche Verwendung) |
Cn |
Other, Not Assigned (Andere, nicht zugeordnet; keine Zeichen besitzen diese Eigenschaft) |
.NET Framework stellt zusätzliche Kategorien bereit, die einen Satz von Unicode-Zeichenkategorien darstellen. Sie sind in der folgenden Tabelle angegeben.
Kategorie |
Bedeutung |
---|---|
C |
(Alle Steuerzeichen) Cc, Cf, Cs, Co und Cn. |
L |
(Alle Buchstaben) Lu, Ll, Lt, Lm und Lo. |
M |
(Alle diakritischen Zeichen) Mn, Mc und Me. |
N |
(Alle Zahlen) Nd, Nl und No. |
P |
(Gesamte Interpunktion) Pc, Pd, Ps, Pe, Pi, Pf und Po. |
S |
(Alle Symbole) Sm, Sc, Sk und So. |
Z |
(Alle Trennzeichen) Zs, Zl und Zp. |
Unterstützte benannte Blöcke
.NET Framework stellt die in der folgenden Tabelle aufgelisteten benannten Blöcke bereit. Der Satz von unterstützten benannten Blöcken basiert auf Unicode 4.0 und Perl 5.6.
Codepunktbereich |
Blockname |
---|---|
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 – oder – 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 – oder – 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 |
Zeichenklassensubtraktion
Eine Zeichenklasse definiert einen Satz von Zeichen. Durch Zeichenklassensubtraktion erhalten Sie einen Zeichensatz, der aus dem Ausschluss der Zeichen in einer Zeichenklasse aus einer anderen Zeichenklasse resultiert.
Ein Zeichenklassensubtraktionsausdruck hat folgende Form:
[base_group-[excluded_group]]
Die eckigen Klammern ([]) und der Bindestrich (-- sind obligatorisch. base_group ist eine positive oder negative Zeichengruppe, wie in der Tabelle Zeichenklassensyntax beschrieben. Die excluded_group-Komponente ist eine andere positive oder negative Zeichengruppe bzw. ein anderer Zeichenklassensubtraktionsausdruck (d. h. Sie können Zeichenklassensubtraktionsausdrücke schachteln).
Angenommen, Sie haben eine Basisgruppe, die aus dem Zeichenbereich von 'a' bis 'z' besteht. Wenn Sie einen Zeichensatz definieren möchten, der aus der Basisgruppe mit Ausnahme des Zeichens 'm' besteht, verwenden Sie [a-z-[m]]. Möchten Sie einen Zeichensatz definieren, der aus der Basisgruppe mit Ausnahme der Zeichen 'd', 'j' und 'p' besteht, verwenden Sie [a-z-[djp]]. Um einen Zeichensatz zu definieren, der aus der Basisgruppe mit Ausnahme der Zeichen 'm' bis 'p' besteht, verwenden Sie [a-z-[m-p]].
Betrachten Sie den geschachtelten Zeichenklassensubtraktionsausdruck [a-z-[d-w-[m-o]]]. Der Ausdruck wird vom innersten Zeichenbereich nach außen ausgewertet. Zuerst wird der Zeichenbereich 'm' bis 'o' vom Zeichenbereich 'd' bis 'w' subtrahiert. Ergebnis ist der Zeichensatz 'd' bis 'l' und 'p' bis 'w'. Dieser Satz wird dann vom Zeichenbereich 'a' bis 'z' subtrahiert. Ergebnis ist der Zeichensatz [abcmnoxyz].
Sie können bei der Zeichenklassensubtraktion jede beliebige Zeichenklasse verwenden. Wenn Sie einen Zeichensatz definieren möchten, der aus allen Unicode-Zeichen von \u0000 bis \uFFFF mit Ausnahme von Leerzeichen (\s), den Zeichen in der allgemeinen Interpunktionskategorie (\p{P}), den Zeichen im benannten Block IsGreek (\p{IsGreek}) und dem Unicode-Steuerzeichen NEXT LINE (\x85) besteht, verwenden Sie [\u0000-\uFFFF-[\s\p{P}\p{IsGreek}\x85]].
Wählen Sie für einen Zeichenklassensubtraktionsausdruck Zeichenklassen aus, mit denen Sie nützliche Ergebnisse erhalten. Vermeiden Sie Ausdrücke, die einen leeren Satz von Zeichen ergeben, die nichts entsprechen können, bzw. Ausdrücke, die der ursprünglichen Basisgruppe entsprechen. Ein leerer Zeichensatz ist z. B. das Ergebnis des Ausdrucks [\p{IsBasicLatin}-[\x00-\x7F]], mit dem alle Zeichen aus der allgemeinen Kategorie IsBasicLatin subtrahiert werden. Ähnlich ist die ursprüngliche Basisgruppe das Ergebnis des Ausdrucks [a-z-[0-9]]. Der Grund dafür ist, dass die Basisgruppe (der Zeichenbereich der Buchstaben von 'a' bis 'z') keine der Zeichen in der ausgeschlossenen Gruppe (dem Zeichenbereich der Dezimalziffern von '0' bis '9') enthält.
Beachten Sie, dass reguläre Ausdrücke des XML-Schemas die Zeichenklassensubtraktion ähnlich unterstützen.
Siehe auch
Referenz
Optionen für reguläre Ausdrücke