Regex-Zeichenklassen
Zeichenklassenkonstrukte
Mit einer Zeichenklasse können Sie einen Satz von Zeichen in eckigen Klammern angeben, die eine Übereinstimmung mit einem einzelnen Zeichen ergeben. Eine Zeichenklasse ist nur mit einem einzelnen Zeichen identisch. Beispiel:
gr[ae]y
wird mit abgeglichen gray
oder grey
, aber nicht bis graay
oder graey
. Die Reihenfolge der Zeichen in Klammern spielt keine Rolle.Sie können einen Bindestrich innerhalb einer Zeichenklasse verwenden, um einen Bereich von Zeichen anzugeben. Beispiel:
[a-z]
stimmt mit einem einzelnen Kleinbuchstaben zwischen überein a
und z
. Sie können auch mehr als einen Bereich oder eine Kombination aus Bereichen und einzelnen Zeichen verwenden. Beispiel: [0-9X]
stimmt mit einer Ziffer oder dem Buchstaben überein X
. Die Reihenfolge der Zeichen und Bereiche spielt keine Rolle.Ein Caret nach einer öffnenden Klammer gibt die Zeichen an, die von einer Übereinstimmung ausgeschlossen werden sollen. Beispiel:
[^abc]
ist mit einem beliebigen Zeichen identisch, außer a
, b
, oder c
.Konstruieren | Art | Beschreibung |
|---|---|---|
[
abc ] | Ganz einfach | Abgeglichen a oder b oder c
|
[^abc]
| Negation | ist mit einem beliebigen Zeichen identisch, außer a oder b oder c
|
[a-zA-Z]
| Bereich | Abgeglichen a bis z , oder A bis Z (einschließlich) |
[a-d[m-p]]
| Gewerkschaft | Abgeglichen a bis d , oder m bis p
|
[a-z&&[def]]
| Schnittmenge | Abgeglichen d , e , oder f
|
[a-z&&[^xq]]
| Subtraktion | Abgeglichen a bis z , außer x und q
|
Vordefinierte Zeichenklassen
Vordefinierte Zeichenklassen sind hilfreiche Abkürzungen für häufig verwendete reguläre Ausdrücke.
Konstruieren | Beschreibung | Beispiel: |
|---|---|---|
.
| ist mit einem beliebigen einzelnen Zeichen identisch (außer Zeilenumbruch) | .at ist mit "cat", "hat" und auch mit "bat" in der Wortgruppe "Batch Files" identisch |
\d
| ist mit einem beliebigen Ziffernzeichen identisch (entsprechend [0-9] ) | \d stimmt mit "3" in "C3PO" und "2" in "file_2.txt" überein |
\D
| Ist mit einem beliebigen nicht-numerischen Zeichen identisch (entspricht [^0-9] ) | \D stimmt mit "S" in "900S" und "Q" in "Q45" überein |
\s
| Ist mit einem beliebigen einzelnen Leerzeichen identisch (entspricht [ \t\n\x0B\f\r] ) | \sbook stimmt mit "book" in "blaues Buch" überein, aber nicht mit "Notizbuch" |
\S
| Ist mit einem beliebigen einzelnen Zeichen identisch, das keine Leerzeichen ist | \Sbook stimmt mit "Buch" in "Notizbuch" überein, aber nicht mit "Blaues Buch" |
\w
| Ist mit jedem alphanumerischen Zeichen identisch, einschließlich Unterstrich (entsprechend). [A-Za-z0-9_] ) | r\w* stimmt mit "RM" und "Root" überein |
\W
| ist mit einem beliebigen nicht-alphanumerischen Zeichen identisch (entsprechend [^A-Za-z0-9_] ) | \W stimmt mit "&" in "stmd &", "%" in "100%" und "$" in "$HOME" überein |
POSix-Zeichenklassen (US-ASCII)
POSix verfügt über eine Reihe von Zeichenklassen, die bestimmte allgemeine Bereiche kennzeichnen. Sie ähneln Klammern und vordefinierten Zeichenklassen, berücksichtigen jedoch das Gebietsschema (die lokale Sprache/das Kodierungssystem).
Konstruieren | Beschreibung |
|---|---|
\p{Lower}
| Ein Kleinbuchstabe, [a-z]
|
\p{Upper}
| Ein Großbuchstabe, [A-Z]
|
\p{ASCII}
| Ein ASCII-Zeichen, [\x00-\x7F]
|
\p{Alpha}
| Ein Buchstabe, [a-zA-z]
|
\p{Digit}
| Eine Ziffer, [0-9]
|
\p{Alnum}
| Ein alphanumerisches Zeichen, [a-zA-z0-9]
|
\p{Punct}
| Ein Satzzeichen, eines der folgenden !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
|
\p{Graph}
| Ein sichtbares Zeichen, [\p{Alnum}\p{Punct}]
|
\p{Print}
| Ein druckbares Zeichen, [\p{Graph}\x20]
|
\p{Blank}
| Ein Leerzeichen oder Register, [ t]
|
\p{Cntrl}
| Ein Steuerzeichen, [\x00-\x1F\x7F]
|
\p{XDigit}
| Eine Hexadezimalzahl, [0-9a-fA-F]
|
\p{Space}
| Ein Leerzeichen, [ \t\n\x0B\f\r]
|