Freigeben über


RE2-Syntax

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

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

In KQL müssen reguläre Ausdrücke als Zeichenfolgenliterale codiert werden und den Zeichenfolgen-Quotingregeln entsprechen. Beispielsweise wird der reguläre RE2-Ausdruck \A 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 Syntax regulärer Ausdrücke re2, die zum Schreiben regulärer Ausdrücke in Kusto verwendet wird.

Syntaxelement Beschreibung
Einzelne Literale Einzelne Zeichen entsprechen sich selbst, mit Ausnahme von Metacharactern (* + ? ( ) |), die eindeutige Bedeutung haben, wie in den folgenden Zeilen beschrieben.
Metacharacter Um einen Metacharacter buchstäblich abzugleichen, entweichen Sie es mit umgekehrten Schrägstrichen. Der reguläre Ausdruck \+ entspricht z. B. einem Literal pluszeichen (+) .
Alternierung Alternative zwei Ausdrücke zum | Erstellen eines neuen Ausdrucks, der einem der Ausdrücke entspricht. Entspricht z. B e1 | e2 . entweder e1 oder e2.
Verkettung Verketten Sie zwei Ausdrücke, um einen neuen Ausdruck zu erstellen, der dem ersten Ausdruck gefolgt von der zweiten entspricht. Beispiel: e1e2 Übereinstimmungen e1 , gefolgt von e2.
Wiederholen Metacharacter ?, +, und * sind Wiederholungsoperatoren. Entspricht z. B e1? . null oder einem Vorkommen von e1, e1+ entspricht einem oder mehreren Vorkommen von e1, und e1* entspricht einer Sequenz von Null oder mehr, möglicherweise unterschiedlichen Zeichenfolgen, die übereinstimmen e1.

Hinweis

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

Einstellige Ausdrücke

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 (bevorzugen x)

Wiederholungen

Beispiel Beschreibung
x* null oder mehr x, bevorzugen Sie mehr
x+ ein oder xmehrere , bevorzugen Sie mehr
x? null oder eins x, bevorzugen Sie eine
x{n,m} n oder +1 oder n... oder m x, bevorzugen Sie mehr
x{n,} n oder mehr x, bevorzugen Sie mehr
x{n} genau n x
x*? null oder mehr x, bevorzugen weniger
x+? eine oder xmehrere , bevorzugen weniger
x?? null oder eins x, prefer zero
x{n,m}? n oder +1 oder n... oder m x, bevorzugen Sie weniger
x{n,}? n oder mehr x, bevorzugen Sie weniger
x{n}? genau n x
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 erstellen. Unbegrenzte Wiederholungen unterliegen dieser Einschränkung nicht.

Possessive Wiederholungen

Beispiel Beschreibung
x*+ null oder mehr x, possessiv (NICHT UNTERSTÜTZT)
x++ ein oder xmehrere , possessive (NICHT UNTERSTÜTZT)
x?+ null oder eins x, possessiv (NICHT UNTERSTÜTZT)
x{n,m}+ n oder... oder m x, possessiv (NICHT UNTERSTÜTZT)
x{n,}+ n oder mehr x, Possessiv (NICHT UNTERSTÜTZT)
x{n}+ genau n x, possessiv (NICHT UNTERSTÜTZT)

Gruppierung

Beispiel Beschreibung
(re) Nummerierte Erfassungsgruppe (Unterübereinstimmung)
(?P<name>re) benannte und nummerierte Erfassungsgruppe (Unterübereinstimmung)
(?<name>re) benannte und nummerierte Erfassungsgruppe (Unterübereinstimmung) (NICHT UNTERSTÜTZT)
(?'name're) benannte und nummerierte Erfassungsgruppe (Unterübereinstimmung) (NICHT UNTERSTÜTZT)
(?:re) Gruppe ohne Kapselung
(?flags) Kennzeichnungen innerhalb der aktuellen Gruppe festlegen; Nichtcapturing
(?flags:re) Kennzeichnungen während der Wiederverwendung festlegen; Nichtcapturing
(?#text) Kommentar (NICHT UNTERSTÜTZT)
(?\|x\|y\|z) Zurücksetzen der Verzweigungsnummerierung (NICHT UNTERSTÜTZT)
(?>re) possessive Übereinstimmung von re (NICHT UNTERSTÜTZT)
re@> possessive Übereinstimmung von re (NICHT UNTERSTÜTZT) VIM
%(re) nicht gekapselte Gruppe (NICHT UNTERSTÜTZT) VIM

Flags

Beispiel Beschreibung
i Groß-/Kleinschreibung nicht beachtet (Standard false)
m Mehrzeiligen Modus: ^ und $ Zuordnen der Anfangs-/Endzeile zusätzlich zum Anfangs-/Endtext (Standard false)
s Übereinstimmung \n zulassen . (Standard false)
U ungreedy: Swap-Bedeutung von x* und x*?, x+ und x+?, usw (Standard false)

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

Um Flags zu verwenden, müssen Sie die parameter wie flags folgt angeben: kind= regex regexFlags flags=.kind

Leere Zeichenfolgen

Beispiel Beschreibung
^ am Anfang von Text oder Zeile (m=true)
$ am Ende des Texts (wie \z nicht\Z) oder Zeile (m=true)
\A am Anfang des Texts
\b bei ASCII-Wortgrenze (\w auf einer Seite und \W, \A, oder \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 der Neuzeile am Ende des Texts (NICHT UNTERSTÜTZT)
\z am Ende des Texts
(?=re) vor textabgleich re (NICHT UNTERSTÜTZT)
(?!re) vor dem Nichtabgleich re von Text (NICHT UNTERSTÜTZT)
(?<=re) nach textabgleich re (NICHT UNTERSTÜTZT)
(?<!re) nach dem Nichtabgleich re von Text (NICHT UNTERSTÜTZT)
re& vor Textabgleich re (NICHT UNTERSTÜTZT) VIM
re@= vor Textabgleich re (NICHT UNTERSTÜTZT) VIM
re@! bevor text nicht übereinstimmen re (NICHT UNTERSTÜTZT) VIM
re@<= nach textabgleich re (NICHT UNTERSTÜTZT) VIM
re@<! after text not matching re (NOT SUPPORTED) VIM
\zs legt anfang der Übereinstimmung (= \K) (NICHT UNTERSTÜTZT) VIM
\ze legt das Ende der Übereinstimmung fest (NICHT UNTERSTÜTZT) VIM
\%^ Dateianfang (NICHT UNTERSTÜTZT) VIM
\%$ Ende der Datei (NICHT UNTERSTÜTZT) VIM
\%V auf dem Bildschirm (NICHT UNTERSTÜTZT) VIM
\%# Cursorposition (NICHT UNTERSTÜTZT) VIM
\%'m Markposition m (NICHT UNTERSTÜTZT) VIM
\%23l in Zeile 23 (NICHT UNTERSTÜTZT) VIM
\%23c in Spalte 23 (NICHT UNTERSTÜTZT) VIM
\%23v in virtueller Spalte 23 (NICHT UNTERSTÜTZT) VIM

Escapesequenzen

Beispiel Beschreibung
\a Glocke (≡ \007)
\f Formularfeed (≡ \014)
\t Horizontale Registerkarte (≡ \011)
\n Neue Zeile (≡ \012)
\r Wagenrücklauf (≡ \015)
\v Vertikales Tabstoppzeichen (≡ \013)
\* literal *, für jedes Interpunktionszeichen *
\123 Oktalzeichencode (bis zu drei Ziffern)
\x7F Hexzeichencode (genau zwei Ziffern)
\x{10FFFF} Hexzeichencode
\C Übereinstimmung mit einem einzelnen Byte sogar im UTF-8-Modus
\Q...\E Literaltext ... auch bei ... Interpunktion
\1 Backreference (NICHT UNTERSTÜTZT)
\b Rücktaste (NICHT UNTERSTÜTZT) (Verwenden \010)
\cK Steuerelementzeichen ^K (NICHT UNTERSTÜTZT) (Verwenden \001 usw.)
\e escape (NICHT UNTERSTÜTZT) (Verwenden \033)
\g1 Backreference (NICHT UNTERSTÜTZT)
\g{1} Backreference (NICHT UNTERSTÜTZT)
\g{+1} Backreference (NICHT UNTERSTÜTZT)
\g{-1} Backreference (NICHT UNTERSTÜTZT)
\g{name} benannte Backreference (NICHT UNTERSTÜTZT)
\g<name> Subroutineanruf (NICHT UNTERSTÜTZT)
\g'name' Subroutineanruf (NICHT UNTERSTÜTZT)
\k<name> benannte Backreference (NICHT UNTERSTÜTZT)
\k'name' benannte Backreference (NICHT UNTERSTÜTZT)
\lX Kleinbuchstaben X (NICHT UNTERSTÜTZT)
\ux Großbuchstaben x (NICHT UNTERSTÜTZT)
\L...\E Kleinbuchstaben ( ... NICHT UNTERSTÜTZT)
\K Anfang $0 zurücksetzen (NICHT UNTERSTÜTZT)
\N{name} benanntes Unicode-Zeichen (NICHT UNTERSTÜTZT)
\R Zeilenumbruch (NICHT UNTERSTÜTZT)
\U...\E Groß-/Kleinschreibung ... (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 oktales Zeichen 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 (Einbuchstabename)

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 der 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 nicht Wortzeichen (≡ [^0-9A-Za-z_])
\h Horizontaler Abstand (NICHT UNTERSTÜTZT)
\H nicht horizontaler Abstand (NICHT UNTERSTÜTZT)
\v Vertikaler Abstand (NICHT UNTERSTÜTZT)
\V Nicht vertikaler Abstand (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:]] grafisch (≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_ { |}~])
[[:lower:]] Kleinbuchstabe (≡ [a-z])
[[:print:]] druckbar (≡ [ -~][ [:graph:]])
[[:punct:]] Interpunktion (≡ [!-/:-@[- {-~])
[[:space:]] Leerzeichen (≡ [\t\n\v\f\r ])
[[:upper:]] Großbuchstabe (≡ [A-Z])
[[:word:]] Wortzeichen (≡ [0-9A-Za-z_])
[[:xdigit:]] Hexziffer (≡ [0-9A-Fa-f])

Unicode-Zeichenklassennamen

Allgemein

Beispiel Beschreibung
C Andere
Cc Steuerung
Cf format
Cn nicht zugewiesene Codepunkte (NICHT UNTERSTÜTZT)
Co private Nutzung
Cs Ersatz
L letter
LC Großbuchstaben (NICHT UNTERSTÜTZT)
L& Großbuchstaben (NICHT UNTERSTÜTZT)
Ll Kleinbuchstaben
Lm Modifiziererbuchstabe
Lo anderer Buchstabe
Lt Titelbuchstaben
Lu Großbuchstaben
M markieren
Mc Abstandszeichen
Me Umschließende Markierung
Mn Nicht-Pacing-Markierung
N Zahl
Nd Dezimalzahl
Nl Buchstabennummer
No andere Zahl
P Interpunktion
Pc Interpunktion von Verbindern
Pd Gedankenstrichzeichen
Pe Interpunktion schließen
Pf Letzte Interpunktion
Pi Anfängliche Interpunktion
Po andere Interpunktion
Ps Interpunktion öffnen
S Symbol
Sc Währungszeichen
Sk Modifizierersymbol
Sm Mathematisches Symbol
So weiteres 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 Schlüsselwortzeichen (NICHT UNTERSTÜTZT) VIM
\K \k außer Ziffern (NICHT UNTERSTÜTZT) VIM
\f Dateinamenzeichen (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 Nicht-Leerzeichen (≡ [^ \t]) (NICHT UNTERSTÜTZT) VIM
\d Ziffern (≡ [0-9]) VIM
\D nicht \d VIM
\x Hexziffern (≡ [0-9A-Fa-f]) (NICHT UNTERSTÜTZT) VIM
\X nicht \x (NICHT UNTERSTÜTZT) VIM
\o oktale Ziffern (≡ [0-7]) (NICHT UNTERSTÜTZT) VIM
\O nicht \o (NICHT UNTERSTÜTZT) VIM
\w Wortzeichen VIM
\W nicht \w VIM
\h Kopf des Wortzeichens (NICHT UNTERSTÜTZT) VIM
\H nicht \h (NICHT UNTERSTÜTZT) VIM
\a alphabetisch (NICHT UNTERSTÜTZT) VIM
\A nicht \a (NICHT UNTERSTÜTZT) VIM
\l VIM in Kleinbuchstaben (NICHT UNTERSTÜTZT)
\L VIM nicht kleingeschrieben (NICHT UNTERSTÜTZT)
\u VIM in Großbuchstaben (NICHT UNTERSTÜTZT)
\U VIM nicht in Großbuchstaben (NICHT UNTERSTÜTZT)
\_x \x plus Newline, for any x (NOT SUPPORTED) VIM
\c Groß-/Kleinschreibung ignorieren (NICHT UNTERSTÜTZT) VIM
\C Groß-/Kleinschreibung beachten (NICHT UNTERSTÜTZT) VIM
\m Magie (NICHT UNTERSTÜTZT) VIM
\M nomagic (NICHT UNTERSTÜTZT) VIM
\v verymagic (NICHT UNTERSTÜTZT) VIM
\V verynomagic (NICHT UNTERSTÜTZT) VIM
\Z Unterschiede bei der Unicode-Kombination von Zeichen 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) rekursive Aufruf der Regexp-Erfassungsgruppe n (NICHT UNTERSTÜTZT)
(?+n) rekursive Aufruf der relativen Gruppe +n (NICHT UNTERSTÜTZT)
(?-n) rekursive Aufruf der relativen Gruppe -n (NICHT UNTERSTÜTZT)
(?C) PCRE-Legende (NICHT UNTERSTÜTZT) PCRE
(?R) rekursive Aufruf von "regexp" (≡ (?0)) (NICHT UNTERSTÜTZT)
(?&name) rekursive Aufruf der benannten Gruppe (NICHT UNTERSTÜTZT)
(?P=name) benannte Backreference (NICHT UNTERSTÜTZT)
(?P>name) rekursive Aufruf der benannten Gruppe (NICHT UNTERSTÜTZT)
(?(cond)true\|false) Bedingte Verzweigung (NICHT UNTERSTÜTZT)
(?(cond)true) Bedingte Verzweigung (NICHT UNTERSTÜTZT)
(*ACCEPT) Erstellen von Regexps mehr 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) Newline-Konvention festlegen (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