Freigeben über


Zeichenklassen

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 XML Schema Regular Expressions die Zeichenklassensubtraktion ähnlich unterstützen.

Siehe auch

Referenz

GetUnicodeCategory
Optionen für reguläre Ausdrücke

Weitere Ressourcen

Sprachelemente für reguläre Ausdrücke