RE2-Syntax

Dieser Artikel bietet eine Übersicht über die Syntax regulärer Ausdrücke, die von Kusto-Abfragesprache (KQL) unterstützt wird, der Syntax der RE2-Bibliothek.

Es gibt eine Reihe von KQL-Operatoren und -Funktionen, die Zeichenfolgenabgleich, -auswahl und -extraktion mit regulären Ausdrücken wie matches regex, parseund replace_regex()ausführen.

In KQL müssen reguläre Ausdrücke als Zeichenfolgenliterale codiert werden und den Zeichenfolgen-Anführungsregeln folgen. Der reguläre RE2-Ausdruck \A wird beispielsweise in KQL als "\\A"dargestellt. Der zusätzliche umgekehrte Schrägstrich gibt an, dass der andere umgekehrte Schrägstrich Teil des regulären Ausdrucks \Aist.

Syntaxübersicht

Die folgende Tabelle enthält eine Übersicht über die Re2-Syntax für reguläre Ausdrücke, die zum Schreiben regulärer Ausdrücke in Kusto verwendet wird.

Syntaxelement BESCHREIBUNG
Einzelne Literale Einzelne Zeichen entsprechen sich selbst, mit Ausnahme von Metazeichen (* + ? ( ) |), die eine eindeutige Bedeutung haben, wie in den folgenden Zeilen beschrieben.
Metazeichen Um eine Metazeichen wörtlich zuzuordnen, entweichen Sie sie mit umgekehrten Schrägstrichen. Der reguläre Ausdruck \+ entspricht z. B. einem Literalzeichen plus (+).
Alternierung Ersetzen Sie zwei Ausdrücke mit | , um einen neuen Ausdruck zu erstellen, der mit einem der Ausdrücke übereinstimmt. Entspricht z. e1 | e2 B. entweder e1 oder e2.
Verkettung Verketten Sie zwei Ausdrücke, um einen neuen Ausdruck zu erstellen, der dem ersten Ausdruck gefolgt vom zweiten Ausdruck entspricht. Beispiel: Übereinstimmungen e1 gefolgt e1e2 von e2.
Wiederholen Metazeichen ?, +, und * sind Wiederholungsoperatoren. Entspricht beispielsweise e1? null oder einem Vorkommen von e1, e1+ entspricht einem oder mehreren Vorkommen von e1und e1* entspricht einer Sequenz von 0 oder mehr, möglicherweise unterschiedlichen, Zeichenfolgen, die mit übereinstimmen e1.

Hinweis

Operatoren regulärer Ausdrücke werden in der folgenden Reihenfolge ausgewertet: Alternation (|), Verkettung (parallele Ausdrücke) und Wiederholung (?, +, *). Verwenden Sie Klammern, um die Auswertungsreihenfolge zu steuern.

Ausdrücke mit ein Zeichen

Beispiel BESCHREIBUNG
. Alle Zeichen, möglicherweise auch Zeilenvorschub (s=true)
[xyz] Zeichenklasse
[^xyz] Negierte Zeichenklasse
\d Perl-Zeichenklasse
\D Negierte Perl-Zeichenklasse
[[:alpha:]] ASCII-Zeichenklasse
[[:^alpha:]] Negierte ASCII-Zeichenklasse
\pN Unicode-Zeichenklasse (Name aus nur einem Buchstaben)
\p{Greek} Unicode-Zeichenklasse
\PN Negierte Unicode-Zeichenklasse (Name aus nur einem Buchstaben)
\P{Greek} Negierte Unicode-Zeichenklasse

Verbundwerkstoffe

Beispiel BESCHREIBUNG
xy x gefolgt von y
x\|y x oder y (bevorzugt x)

Wiederholungen

Beispiel BESCHREIBUNG
x* null oder mehr x, bevorzugen Sie mehr
x+ ein oder mehrere x, bevorzugen Sie mehr
x? 0 oder 1 x, bevorzugen Sie eins
x{n,m} n oder n+1 oder ... oder mx, bevorzugen Sie mehr
x{n,} n oder mehr x, bevorzugen Sie mehr
x{n} Genau nx
x*? null oder mehr x, bevorzugen Sie weniger
x+? ein oder mehrere x, bevorzugen Sie weniger
x?? 0 oder 1 x, bevorzugen Sie null
x{n,m}? n oder n+1 oder ... oder mx, bevorzugen Sie weniger
x{n,}? n oder mehr x, bevorzugen Sie weniger
x{n}? Genau nx
x{} (≡ x*) (NICHT UNTERSTÜTZT) VIM
x{-} (≡ x*?) (NICHT UNTERSTÜTZT) VIM
x{-n} (≡ x{n}?) (NICHT UNTERSTÜTZT) VIM
x= (≡ x?) (NICHT UNTERSTÜTZT) VIM

Implementierungseinschränkung: Die Zählformulare x{n,m}, x{n,} und x{n} lehnen Formulare ab, die eine minimale oder maximale Wiederholungsanzahl über 1000 erzeugen. Unbegrenzte Wiederholungen unterliegen dieser Einschränkung nicht.

Possessive Wiederholungen

Beispiel BESCHREIBUNG
x*+ null oder mehr x, possessive (NICHT UNTERSTÜTZT)
x++ ein oder mehrere x, Possessive (NICHT UNTERSTÜTZT)
x?+ null oder 1 x, possessive (NICHT UNTERSTÜTZT)
x{n,m}+ n Oder... oder mx, possessiv (NICHT UNTERSTÜTZT)
x{n,}+ n oder mehr x, possessive (NICHT UNTERSTÜTZT)
x{n}+ genau nx, possessive (NICHT UNTERSTÜTZT)

Gruppierung

Beispiel BESCHREIBUNG
(re) nummerierte Erfassungsgruppe (Unterübereinstimmung)
(?P<name>re) benannte & nummerierte Erfassungsgruppe (Submatch)
(?<name>re) benannt & nummerierte Erfassungsgruppe (Unterübereinstimmung) (NICHT UNTERSTÜTZT)
(?'name're) benannt & nummerierte Erfassungsgruppe (Unterübereinstimmung) (NICHT UNTERSTÜTZT)
(?:re) Gruppe ohne Kapselung
(?flags) Festlegen von Flags innerhalb der aktuellen Gruppe; nicht Kapseln
(?flags:re) Festlegen von Flags während der Re; nicht Kapseln
(?#text) kommentar (NICHT UNTERSTÜTZT)
(?\|x\|y\|z) Zurücksetzen der Branchnummerierung (NICHT UNTERSTÜTZT)
(?>re) Possessive Übereinstimmung von re (NICHT UNTERSTÜTZT)
re@> Possessive Übereinstimmung mit re (NICHT UNTERSTÜTZT) VIM
%(re) VIM für nicht kapselnde Gruppe (NICHT UNTERSTÜTZT)

Flags

Beispiel BESCHREIBUNG
i Ohne Beachtung der Groß-/Kleinschreibung (Standard false)
m mehrzeilige Modus: ^ und $ stimmen neben Dem Anfangs-/Endtext (Standard false) mit Start-/Endzeile überein.
s Übereinstimmung \n zulassen . (Standard false)
U ungreedy: Tauschbedeutung von x* und x*?und , x+ und x+?usw (standard false)

Flagsyntax ist xyz (set) oder -xyz (clear) oder xy-z (set xy, clear z).

Um Flags verwenden zu können, müssen Sie die kind Parameter und flags wie folgt angeben: kind=regexflags=regexFlags.

Leere Zeichenfolgen

Beispiel BESCHREIBUNG
^ am Anfang von Text oder Zeile (m=true)
$ am Ende von Text (wie \z nicht\Z) oder Zeile (m=true)
\A am Anfang des Texts
\b an DER ASCII-Wortgrenze (\w auf der einen Seite und \W, \Aoder \z auf der anderen Seite)
\B nicht an der ASCII-Wortgrenze
\g am Anfang des durchsuchten Untertexts (NICHT UNTERSTÜTZT) PCRE
\G am Ende der letzten Übereinstimmung (NICHT UNTERSTÜTZT) PERL
\Z am Ende des Texts oder vor dem Zeilenumbruch am Ende des Texts (NICHT UNTERSTÜTZT)
\z am Ende des Texts
(?=re) vor dem Textabgleich re (NICHT UNTERSTÜTZT)
(?!re) bevor text nicht übereinstimmen re (NICHT UNTERSTÜTZT)
(?<=re) nach dem Textabgleich re (NICHT UNTERSTÜTZT)
(?<!re) nach nicht übereinstimmendem re Text (NICHT UNTERSTÜTZT)
re& vor textabgleich re (NICHT UNTERSTÜTZT) VIM
re@= vor textabgleich re (NICHT UNTERSTÜTZT) VIM
re@! vor text nicht übereinstimmen re (NICHT UNTERSTÜTZT) VIM
re@<= VIM nach dem Textabgleich re (NICHT UNTERSTÜTZT)
re@<! nach text nicht übereinstimmen re (NICHT UNTERSTÜTZT) VIM
\zs legt start of match (= \K) (NICHT UNTERSTÜTZT) VIM fest
\ze legt das VIM zum Ende der Übereinstimmung (NICHT UNTERSTÜTZT) fest.
\%^ Dateianfang (NICHT UNTERSTÜTZT) VIM
\%$ VIM am Ende der Datei (NICHT UNTERSTÜTZT)
\%V VIM auf dem Bildschirm (NICHT UNTERSTÜTZT)
\%# Cursorposition (NICHT UNTERSTÜTZT) VIM
\%'m Position markieren m (NICHT UNTERSTÜTZT) VIM
\%23l in Zeile 23 (NICHT UNTERSTÜTZT) VIM
\%23c in Spalte 23 (NICHT UNTERSTÜTZT) VIM
\%23v in der virtuellen Spalte 23 (NICHT UNTERSTÜTZT) VIM

Escapesequenzen

Beispiel BESCHREIBUNG
\a Glocke (≡ \007)
\f Formularfeed (≡ \014)
\t horizontale Registerkarte (≡ \011)
\n Zeilenumbruch (≡ \012)
\r Wagenrücklauf (≡ \015)
\v vertikales Tabulatorzeichen (≡ \013)
\* Literal *, für ein beliebiges Satzzeichen *
\123 Oktalzeichencode (bis zu drei Ziffern)
\x7F Sechskantzeichencode (genau zwei Ziffern)
\x{10FFFF} Hexzeichencode
\C Übereinstimmung mit einem einzelnen Byte auch im UTF-8-Modus
\Q...\E Literaltext ... auch bei ... Interpunktion
\1 Rückreferenz (NICHT UNTERSTÜTZT)
\b Backspace (NICHT UNTERSTÜTZT) (verwenden Sie \010)
\cK Control char ^K (NICHT UNTERSTÜTZT) (verwenden Sie \001 usw.)
\e escape (NICHT UNTERSTÜTZT) (verwenden \033Sie )
\g1 Rückreferenz (NICHT UNTERSTÜTZT)
\g{1} Rückreferenz (NICHT UNTERSTÜTZT)
\g{+1} Rückreferenz (NICHT UNTERSTÜTZT)
\g{-1} Rückreferenz (NICHT UNTERSTÜTZT)
\g{name} benannte Rückreferenz (NICHT UNTERSTÜTZT)
\g<name> Unterroutineaufruf (NICHT UNTERSTÜTZT)
\g'name' Unterroutineaufruf (NICHT UNTERSTÜTZT)
\k<name> benannte Rückreferenz (NICHT UNTERSTÜTZT)
\k'name' benannte Rückreferenz (NICHT UNTERSTÜTZT)
\lX Kleinbuchstaben X (NICHT UNTERSTÜTZT)
\ux Großbuchstaben x (NICHT UNTERSTÜTZT)
\L...\E Kleinbuchstaben ( ... NICHT UNTERSTÜTZT)
\K Anfang zurücksetzen ( $0 NICHT UNTERSTÜTZT)
\N{name} benanntes Unicode-Zeichen (NICHT UNTERSTÜTZT)
\R Zeilenumbruch (NICHT UNTERSTÜTZT)
\U...\E Großbuchstaben ( ... NICHT UNTERSTÜTZT)
\X erweiterte Unicode-Sequenz (NICHT UNTERSTÜTZT)
\%d123 Dezimalzeichen 123 (NICHT UNTERSTÜTZT) VIM
\%xFF Hexzeichen FF (NICHT UNTERSTÜTZT) VIM
\%o123 Oktalzeichen 123 (NICHT UNTERSTÜTZT) VIM
\%u1234 Unicode-Zeichen 0x1234 (NICHT UNTERSTÜTZT) VIM
\%U12345678 Unicode-Zeichen 0x12345678 (NICHT UNTERSTÜTZT) VIM

Zeichenklassenelemente

Beispiel BESCHREIBUNG
x einzelnes Zeichen
A-Z Zeichenbereich (einschließlich)
\d Perl-Zeichenklasse
[:foo:] ASCII-Zeichenklasse foo
\p{Foo} Unicode-Zeichenklasse Foo
\pF Unicode-Zeichenklasse F (Ein-Buchstabe-Name)

Benannte Zeichenklassen als Zeichenklassenelemente

Beispiel BESCHREIBUNG
[\d] Ziffern (≡ \d)
[^\d] keine Ziffern (≡ \D)
[\D] keine Ziffern (≡ \D)
[^\D] keine Ziffern (≡ \d)
[[:name:]] benannte ASCII-Klasse innerhalb der Zeichenklasse (≡ [:name:])
[^[:name:]] benannte ASCII-Klasse innerhalb einer negierten Zeichenklasse (≡ [:^name:])
[\p{Name}] benannte Unicode-Eigenschaft innerhalb der Zeichenklasse (≡ \p{Name})
[^\p{Name}] benannte Unicode-Eigenschaft innerhalb der negierten Zeichenklasse (≡ \P{Name})

Perl-Zeichenklassen

Nur ASCII

Beispiel BESCHREIBUNG
\d Ziffern (≡ [0-9])
\D keine Ziffern (≡ [^0-9])
\s Leerzeichen (≡ [\t\n\f\r ])
\S keine Leerzeichen (≡ [^\t\n\f\r ])
\w Wortzeichen (≡ [0-9A-Za-z_])
\W keine Wortzeichen (≡ [^0-9A-Za-z_])
\h horizontaler Raum (NICHT UNTERSTÜTZT)
\H kein horizontaler Leerraum (NICHT UNTERSTÜTZT)
\v Vertikaler Raum (NICHT UNTERSTÜTZT)
\V kein vertikaler Raum (NICHT UNTERSTÜTZT)

ASCII-Zeichenklassen

Beispiel BESCHREIBUNG
[[:alnum:]] alphanumerisch (≡ [0-9A-Za-z])
[[:alpha:]] alphabetisch (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] leer (≡ [\t ])
[[:cntrl:]] Steuerelement (≡ [\x00-\x1F\x7F])
[[:digit:]] Ziffern (≡ [0-9])
[[:graph:]] grafische (≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]] Kleinbuchstaben (≡ [a-z])
[[:print:]] druckbar (≡ [ -~][ [:graph:]])
[[:punct:]] Interpunktion (≡ [!-/:-@[-{-~])
[[:space:]] Leerzeichen (≡ [\t\n\v\f\r ])
[[:upper:]] Großbuchstaben (≡ [A-Z])
[[:word:]] Wortzeichen (≡ [0-9A-Za-z_])
[[:xdigit:]] Hexadiffziffer (≡ [0-9A-Fa-f])

Unicode-Zeichenklassennamen

Allgemein

Beispiel BESCHREIBUNG
C Andere
Cc Steuerung
Cf format
Cn Nicht zugewiesene Codepunkte (NICHT UNTERSTÜTZT)
Co Private Verwendung
Cs Ersatz
L Brief
LC Großbuchstaben (NICHT UNTERSTÜTZT)
L& Großbuchstaben (NICHT UNTERSTÜTZT)
Ll Kleinbuchstabe
Lm Modifiziererbuchstabe
Lo anderer Buchstabe
Lt Titelbuchstabe
Lu Großbuchstabe
M markieren
Mc Abstandsmarkierung
Me Umschließende Markierung
Mn Nonspacing-Markierung
N number
Nd Dezimalzahl
Nl Buchstabennummer
No andere Nummer
P Interpunktion
Pc Connector-Interpunktion
Pd Bindestrich-Interpunktion
Pe Satzzeichen schließen
Pf Endgültige Interpunktion
Pi Anfängliche Interpunktion
Po Andere Interpunktion
Ps Offene Interpunktion
S Symbol
Sc Währungssymbol
Sk Modifizierersymbol
Sm mathematisches Symbol
So Anderes Symbol
Z Trennzeichen
Zl Zeilentrennzeichen
Zp Absatztrennzeichen
Zs Leerzeichen

Skripts

Skripts
Adlam
Ahom
Anatolian_Hieroglyphs
Arabic
Armenian
Avestan
Balinese
Bamum
Bassa_Vah
Batak
Bengali
Bhaiksuki
Bopomofo
Brahmi
Braille
Buginese
Buhid
Canadian_Aboriginal
Carian
Caucasian_Albanian
Chakma
Cham
Cherokee
Chorasmian
Common
Coptic
Cuneiform
Cypriot
Cyrillic
Deseret
Devanagari
Dives_Akuru
Dogra
Duployan
Egyptian_Hieroglyphs
Elbasan
Elymaic
Ethiopic
Georgian
Glagolitic
Gothic
Grantha
Greek
Gujarati
Gunjala_Gondi
Gurmukhi
Han
Hangul
Hanifi_Rohingya
Hanunoo
Hatran
Hebrew
Hiragana
Imperial_Aramaic
Inherited
Inscriptional_Pahlavi
Inscriptional_Parthian
Javanese
Kaithi
Kannada
Katakana
Kayah_Li
Kharoshthi
Khitan_Small_Script
Khmer
Khojki
Khudawadi
Lao
Latin
Lepcha
Limbu
Linear_A
Linear_B
Lisu
Lycian
Lydian
Mahajani
Makasar
Malayalam
Mandaic
Manichaean
Marchen
Masaram_Gondi
Medefaidrin
Meetei_Mayek
Mende_Kikakui
Meroitic_Cursive
Meroitic_Hieroglyphs
Miao
Modi
Mongolian
Mro
Multani
Myanmar
Nabataean
Nandinagari
New_Tai_Lue
Newa
Nko
Nushu
Nyiakeng_Puachue_Hmong
Ogham
Ol_Chiki
Old_Hungarian
Old_Italic
Old_North_Arabian
Old_Permic
Old_Persian
Old_Sogdian
Old_South_Arabian
Old_Turkic
Odia
Osage
Osmanya
Pahawh_Hmong
Palmyrene
Pau_Cin_Hau
Phags_Pa
Phoenician
Psalter_Pahlavi
Rejang
Runic
Samaritan
Saurashtra
Sharada
Shavian
Siddham
SignWriting
Sinhala
Sogdian
Sora_Sompeng
Soyombo
Sundanese
Syloti_Nagri
Syriac
Tagalog
Tagbanwa
Tai_Le
Tai_Tham
Tai_Viet
Takri
Tamil
Tangut
Telugu
Thaana
Thai
Tibetan
Tifinagh
Tirhuta
Ugaritic
Vai
Wancho
Warang_Citi
Yezidi
Yi
Zanabazar_Square

Vim-Zeichenklassen

Beispiel BESCHREIBUNG
\i Bezeichnerzeichen (NICHT UNTERSTÜTZT) VIM
\I \i außer Ziffern (NICHT UNTERSTÜTZT) VIM
\k VIM Schlüsselwort (keyword) Zeichen (NICHT UNTERSTÜTZT)
\K \k außer Ziffern (NICHT UNTERSTÜTZT) VIM
\f Dateinamezeichen (NICHT UNTERSTÜTZT) VIM
\F \f außer Ziffern (NICHT UNTERSTÜTZT) VIM
\p druckbares Zeichen (NICHT UNTERSTÜTZT) VIM
\P \p außer Ziffern (NICHT UNTERSTÜTZT) VIM
\s Leerzeichen (≡ [ \t]) (NICHT UNTERSTÜTZT) VIM
\S Nichtweißes Leerzeichen (≡ [^ \t]) (NICHT UNTERSTÜTZT) VIM
\d Ziffern (≡ [0-9]) VIM
\D nicht \d VIM
\x hexadiffrige Ziffern (≡ [0-9A-Fa-f]) (NICHT UNTERSTÜTZT) VIM
\X VIM nicht \x (NICHT UNTERSTÜTZT)
\o Oktale Ziffern (≡ [0-7]) (NICHT UNTERSTÜTZT) VIM
\O VIM nicht \o (NICHT UNTERSTÜTZT)
\w Wortzeichen VIM
\W nicht \w VIM
\h Kopf des Wortzeichens (NICHT UNTERSTÜTZT) VIM
\H VIM nicht \h (NICHT UNTERSTÜTZT)
\a alphabetische VIM (NICHT UNTERSTÜTZT)
\A VIM nicht \a (NICHT UNTERSTÜTZT)
\l VIM für Kleinbuchstaben (NICHT UNTERSTÜTZT)
\L VIM nicht in Kleinbuchstaben (NICHT UNTERSTÜTZT)
\u VIM in Großbuchstaben (NICHT UNTERSTÜTZT)
\U VIM in Großbuchstaben (NICHT UNTERSTÜTZT)
\_x \x plus Zeilenumbruch, für jede x (NICHT UNTERSTÜTZTE) VIM
\c IGNORIEREN der Groß-/Kleinschreibung (NICHT UNTERSTÜTZT) VIM
\C VIM für die Übereinstimmung der Groß-/Kleinschreibung (NICHT UNTERSTÜTZT)
\m magic (NICHT UNTERSTÜTZT) VIM
\M nomagic (NICHT UNTERSTÜTZT) VIM
\v verymagic (NICHT UNTERSTÜTZT) VIM
\V verynomagic (NICHT UNTERSTÜTZT) VIM
\Z Unterschiede in unicode-Kombinationszeichen ignorieren (NICHT UNTERSTÜTZT) VIM

Magic

Beispiel BESCHREIBUNG
(?{code}) beliebiger Perl-Code (NICHT UNTERSTÜTZT) PERL
(??{code}) verschobener beliebiger Perl-Code (NICHT UNTERSTÜTZT) PERL
(?n) rekursiver Aufruf der Regexp-Erfassungsgruppe n (NICHT UNTERSTÜTZT)
(?+n) rekursiver Aufruf der relativen Gruppe +n (NICHT UNTERSTÜTZT)
(?-n) rekursiver Aufruf der relativen Gruppe -n (NICHT UNTERSTÜTZT)
(?C) PCRE-Beschriftung (NICHT UNTERSTÜTZT) PCRE
(?R) rekursiver Aufruf des gesamten regexp (≡ (?0)) (NICHT UNTERSTÜTZT)
(?&name) rekursiver Aufruf einer benannten Gruppe (NICHT UNTERSTÜTZT)
(?P=name) benannte Rückreferenz (NICHT UNTERSTÜTZT)
(?P>name) rekursiver Aufruf einer benannten Gruppe (NICHT UNTERSTÜTZT)
(?(cond)true\|false) Bedingter Branch (NICHT UNTERSTÜTZT)
(?(cond)true) Bedingter Branch (NICHT UNTERSTÜTZT)
(*ACCEPT) regexps wie Prolog (NICHT UNTERSTÜTZT)
(*COMMIT) (NICHT UNTERSTÜTZT)
(*F) (NICHT UNTERSTÜTZT)
(*FAIL) (NICHT UNTERSTÜTZT)
(*MARK) (NICHT UNTERSTÜTZT)
(*PRUNE) (NICHT UNTERSTÜTZT)
(*SKIP) (NICHT UNTERSTÜTZT)
(*THEN) (NICHT UNTERSTÜTZT)
(*ANY) Festlegen der Zeilenumbruchkonvention (NICHT UNTERSTÜTZT)
(*ANYCRLF) (NICHT UNTERSTÜTZT)
(*CR) (NICHT UNTERSTÜTZT)
(*CRLF) (NICHT UNTERSTÜTZT)
(*LF) (NICHT UNTERSTÜTZT)
(*BSR_ANYCRLF) Festlegen der \R-Konvention (NICHT UNTERSTÜTZT) PCRE
(*BSR_UNICODE) (NICHT UNTERSTÜTZT) PCRE