Kurzreferenz der Sprache der regulären Ausdrücke
Die Regex-Entitäten verwenden einen deterministischen Ansatz für den Abgleich von Werten über Regex-Ausdrücke.
Ein regulärer Ausdruck ist ein Muster, das die Engine für reguläre Ausdrücke in Eingabetext zu finden versucht. Ein Muster besteht aus einem oder mehreren Zeichenliteralen, Operatoren oder Konstrukten. Reguläre Ausdrücke können sowohl spezielle als auch gewöhnliche Zeichen enthalten. Die meisten gewöhnlichen Zeichen, wie 'A', 'a' oder '0', sind die einfachsten regulären Ausdrücke; sie passen einfach zu sich selbst. Sie können gewöhnliche Zeichen verketten, so dass last auf die Zeichenfolge 'last' passt.
Einige Zeichen, wie '|' oder '(', sind Sonderzeichen. Sonderzeichen stehen entweder für Klassen von normalen Zeichen oder beeinflussen die Interpretation der sie umgebenden regulären Ausdrücke.
Jeder Abschnitt in dieser Kurzreferenz listet eine bestimmte Kategorie von Zeichen, Operatoren und Konstrukten auf, die Sie zur Definition regulärer Ausdrücke verwenden können.
Unterstützte Regex-Funktionen
Die folgenden Abschnitte beschreiben die unterstützten Regex-Funktionen.
Das Backslash-Zeichen (\) in einem regulären Ausdruck zeigt an, dass das darauf folgende Zeichen entweder ein Sonderzeichen ist (wie in der folgenden Tabelle gezeigt) oder wörtlich interpretiert werden sollte.
Geflüchtete Person | Beschreibung | Muster | Streichhölzer |
---|---|---|---|
\a | Passt zu einem Glockenzeichen, \u0007 | \a | "\u0007" in "Error!" + ‘\u0007’ |
\b | Entspricht in einer Zeichenklasse einem Backspace, \u0008 | [\b]{3,} | "\b\b\b\b" in "\b\b\b\b" |
\t |
Passt zu einer Registerkarte, \u0009. |
(\w+)\t | "item1\t", "item2\t" in "item1\titem2\t" |
\r |
Entspricht einem Wagenrücklauf, \u000D. (\r ist nicht gleichbedeutend mit dem Zeilenumbruchzeichen \n.) |
\r\n(\w+) |
"Diese" in "Diese sind zwei Zeilen" |
\v |
Passt zu einem vertikalen Tabulator, \u000B. |
[\v]{2,} |
"\v\v\v" in "\v\v\v" |
\f |
Passt zu einem Formularvorschub, \u000C. |
[\f]{2,} |
"\f\f\f" in "\f\f\f" |
\n |
Passt zu einer neuen Zeile, \u000A. |
\r\n(\w+) |
"Diese" in "Diese sind zwei Zeilen" |
\ nnn |
Verwendet die oktale Darstellung zur Angabe eines Zeichens (nnn besteht aus zwei oder drei Ziffern) |
\w\040\w |
"a b", "c d" in "a bc d" |
\x nn |
Verwendet die hexadezimale Darstellung zur Angabe eines Zeichens (nn besteht aus genau zwei Ziffern) |
\w\x20\w |
"a b", "c d" in "a bc d" |
\u nnnnn |
Entspricht einem Unicode-Zeichen in hexadezimaler Darstellung (genau vier Ziffern, dargestellt durch nnnnn). |
\w\u0020\w |
"a b", "c d" in "a bc d" |
\ |
Gefolgt von einem Zeichen, das in dieser und anderen Tabellen dieses Themas nicht als Escape-Zeichen erkannt wird, passt es zu diesem Zeichen. Zum Beispiel ist \* dasselbe wie \x2A, und \. ist dasselbe wie \x2E. Dies ermöglicht es der Engine für reguläre Ausdrücke, Sprachelemente (wie * oder ?) und Zeichenliterale (dargestellt durch \* oder \?) zu unterscheiden. |
\d+[\+-x\*]\d+ |
"2+2" und "3*9" in "(2+2) * 3*9" |
Eine Zeichenklasse entspricht einem beliebigen Zeichen aus einer Reihe von Zeichen. Die Zeichenklassen umfassen die in der folgenden Tabelle aufgeführten Sprachelemente.
Charakter-Klasse | Beschreibung | Muster | Streichhölzer |
---|---|---|---|
[ character_group ] |
Passt auf jedes einzelne Zeichen in character_group |
[ae] |
"a" in "grau" |
[^ character_group ] |
Verneinung: Passt auf jedes einzelne Zeichen, das nicht in character_groupenthalten ist. Standardmäßig wird bei den Zeichen in character_group zwischen Groß- und Kleinschreibung unterschieden |
[^aei] |
"r", "g", "n" in "Herrschaft" |
[ erste - letzte ] |
Zeichenbereich: Passt auf jedes einzelne Zeichen im Bereich von first bis last |
[A-Z] |
"A", "B" in "AB123" |
. |
Wildcard: Passt auf jedes einzelne Zeichen außer \n. |
a.e |
"ave" in "nave" |
\w |
Entspricht einem beliebigen Wortzeichen. |
\w |
"I", "D", "A", "1", "3" in "ID A1.3" |
\W |
Passt zu jedem Nicht-Wort-Zeichen. |
\W |
” ", "." in "ID A1.3" |
\s |
Passt zu jedem Leerzeichen. |
\w\s |
"D" in "ID A1.3" |
\S |
Passt auf jedes Zeichen, das nicht aus einem Leerzeichen besteht. |
\s\s |
” _" in "int __ctr" |
\d |
Passt zu jeder Dezimalstelle. |
\d |
"4" in "4 = IV" |
\D |
Passt auf jedes Zeichen außer einer Dezimalziffer. |
\D |
” ", "=", " ", "I", "V" in "4 = IV" |
Anker oder atomare Null-Breiten-Assertionen bewirken, dass eine Übereinstimmung je nach aktueller Position in der Zeichenfolge erfolgreich ist oder fehlschlägt, aber sie veranlassen die Engine nicht, die Zeichenfolge zu durchlaufen oder Zeichen zu verbrauchen. Die in der folgenden Tabelle aufgeführten Metazeichen sind Anker.
Behauptung | Beschreibung | Muster | Streichhölzer |
---|---|---|---|
^ |
Standardmäßig muss die Übereinstimmung am Anfang der Zeichenkette beginnen; im mehrzeiligen Modus muss sie am Anfang der Zeile beginnen. |
^\d{3} |
"901" in "901-333-" |
$ |
Standardmäßig muss die Übereinstimmung am Ende der Zeichenkette oder vor \n am Ende der Zeichenkette erfolgen; im mehrzeiligen Modus muss sie vor dem Ende der Zeile oder vor \n am Ende der Zeile erfolgen. |
-\d{3}$ |
"-333" in "-901-333" |
\A |
Die Übereinstimmung muss am Anfang der Zeichenkette erfolgen. |
\A\d{3} |
"901" in "901-333-" |
\Z |
Die Übereinstimmung muss am Ende der Zeichenkette oder vor \n am Ende der Zeichenkette erfolgen. |
-\d{3}\Z |
"-333" in "-901-333" |
\z |
Die Übereinstimmung muss am Ende der Zeichenkette erfolgen. |
-\d{3}\z |
"-333" in "-901-333" |
\b |
Die Übereinstimmung muss auf einer Grenze zwischen einem \w (alphanumerischen) und einem \W (nicht alphanumerischen) Zeichen erfolgen. |
\b\w+\s\w+\b |
"sie Thema", "sie sie" in "sie Thema sie sie" |
\B |
Die Übereinstimmung darf nicht auf einer \b-Grenze stattfinden. |
\Bend\w*\b |
"ends", "ender" in "end sends endure lender" |
Gruppierungskonstrukte grenzen Teilausdrücke eines regulären Ausdrucks ab und erfassen typischerweise Teilstrings einer Eingabezeichenkette. Zu den Gruppierungskonstrukten gehören die in der folgenden Tabelle aufgeführten Sprachelemente. Es werden nur nicht fangende Gruppen unterstützt.
Gruppierungsbeschränkungen | Beschreibung | Muster | Streichhölzer |
---|---|---|---|
(?: unterausdruck ) |
Definiert eine nicht fangende Gruppe. |
(?:[0-9]{4})|(?:[0-9][0-9] [0-9] [0-9] [0-9]) |
"1234" in "die Zahl ist 1234" |
(?= subexpression ) |
Positive Vorausschau-Behauptung mit Null-Breite. |
\w+(?=\.) |
"ist", "lief" und "aus" in "Er ist". Der Hund lief davon. Die Sonne ist da." |
(?! subexpression ) |
Negative Vorausschau-Behauptung mit Null-Breite. |
\b(?!un)\w+\b |
"sicher", "verwendet" in "unsicher sicher unity verwendet" |
(? <= Unterausdruck ) |
Positive Rückschaubehauptung mit einer Breite von Null. |
(? <=19)\d{2}\b |
"99", "50", "05" in "1851 1999 1950 1905 2003" |
(?<! Unterausdruck ) |
Negative Rückschaubehauptung mit einer Breite von Null. |
(?<!19)\d{2}\b<sajan index="1" /> |
"51", "03" in "1851 1999 1950 1905 2003" |
Ein Quantifizierer gibt an, wie viele Instanzen des vorhergehenden Elements (das ein Zeichen, eine Gruppe oder eine Zeichenklasse sein kann) in der Eingabezeichenkette vorhanden sein müssen, damit eine Übereinstimmung vorliegt. Quantoren umfassen die in der folgenden Tabelle aufgeführten Sprachelemente.
Quantifizierer | Beschreibung | Muster | Streichhölzer |
---|---|---|---|
* |
Entspricht dem vorherigen Element null oder mehr Mal. |
\d*\.\d |
“.0”, “19.9”, “219.9” |
+ |
Entspricht dem vorherigen Element ein oder mehrere Male. |
"be+" |
"bee" in "been", "be" in "bent" |
? |
Entspricht dem vorherigen Element null oder einmal. |
"rai?n" |
"lief", "Regen" |
{ n } |
Entspricht genau dem vorherigen Element n mal |
",\d{3}" |
",043" in "1.043,6", ",876", ",543", und ",210" in "9.876.543.210" |
{ n ,} |
Entspricht mindestens n mal dem vorherigen Element |
“\d{2,}” |
“166”, “29”, “1930” |
{ n , m } |
Entspricht dem vorherigen Element mindestens n , aber höchstens m Mal. |
“\d{3,5}” |
"166", "17668" |
*?, +?, ?? |
Dasselbe wie bei *, + und ?, aber so wenig wie möglich |
<.*?> |
Die Qualifikatoren '*', '+'und '?' sind alle gierig; sie entsprechen so viel Text wie möglich Manchmal ist dieses Verhalten nicht erwünscht; wenn die RE <.*> mit '<a> b <c>'abgeglichen wird, wird die gesamte Zeichenkette abgeglichen, und nicht nur '<a>'. </.*> Durch das Hinzufügen von ? nach dem Qualifier wird der Abgleich auf non-greedy oder minimal Weise durchgeführt; so wenige Zeichen wie möglich werden abgeglichen. Bei Verwendung der RE <.*?> wird nur '<a>'gefunden</.*?> |
{ n }? |
Passt genau auf das vorhergehende Element n mal |
",\d{3}?" |
",043" in "1.043,6", ",876", ",543", und ",210" in "9.876.543.210" |
{ n ,}? |
Stimmt mindestens n mit dem vorherigen Element überein, aber so wenig wie möglich |
“\d{2,}?” |
“166”, “29”, “1930” |
{ n , m }? |
Entspricht dem vorherigen Element zwischen n und m , aber so wenig wie möglich. |
“\d{3,5}?” |
"166", "17668" |
Alternationskonstrukte modifizieren einen regulären Ausdruck, um eine Entweder-Oder-Übereinstimmung zu ermöglichen. Diese Konstrukte umfassen die in der folgenden Tabelle aufgeführten Sprachelemente.
Quantifizierer | Beschreibung | Muster | Streichhölzer |
---|---|---|---|
| |
Passt auf ein beliebiges Element, das durch einen senkrechten Strich (|) getrennt ist. |
th(?:e|is|at) |
"the", "this" in "this is the day" |