Google Sheets-Kochbuch: RE2 Syntax für Google Sheets


Diese Seite ist die deutsche Übersetzung der Seite RE2 regular expression syntax reference vom 20.02.2022. Die Syntax Referenz wurde um die Sprachelemente bereinigt, die in Google-Sheets nicht funktionieren (Stand: 03/2022). Anmerkungen des Übersetzters kursiv.

Einzelzeichen

Bearbeiten
  • . jedes Zeichen, mit Flag einschließlich Zeilenumbruch (s=true)
  • [xyz] Zeichenklasse
  • [^xyz] negierte Zeichenklasse
  • \d Perl Zeichenklasse
  • \D negierte Perl Zeichenklasse
  • [[:alpha:]] ASCII Zeichenklasse
  • [[:^alpha:]] negierte ASCII Zeichenklasse

Zusammengesetzte Zeichen

Bearbeiten
  • xy «x» gefolgt von «y»
  • x|y «x» oder «y» (bevorzugt «x»)

Wiederholungen

Bearbeiten
  • x* null oder mehr «x», bevorzugt mehr
  • x+ ein oder mehr «x», bevorzugt mehr
  • x? null oder ein «x», bevorzugt ein
  • x{n,m} «n» oder «n»+1 oder ... oder «m» «x», bevorzugt mehr
  • x{n,} «n» oder mehr «x», bevorzugt mehr
  • x{n} genau «n» «x»
  • x*? null oder mehr «x», bevorzugt weniger
  • x+? ein oder mehr «x», bevorzugt weniger
  • x?? null oder ein «x», bevorzugt null
  • x{n,m}? «n» oder «n»+1 oder ... oder «m» «x», bevorzugt weniger
  • x{n,}? «n» oder mehr «x», bevorzugt weniger
  • x{n}? genau «n» «x»

Einschränkungen in der Implementation: die zählenden Formen «x{n,m}», «x{n,}» und «x{n}» weisen Formen zurück, die über 1000 Wiederholungen erzeugen. Unbegrenzte Wiederholungen unterliegen dieser Einschränkung nicht. ... hier muss ich eine bessere Übersetzung finden ...

Gruppierung

Bearbeiten

"re" steht hier für "regular expression", also regulärer Ausdruck.

  • (re) nummerierte Speichergruppe (submatch)
    • Die Gruppe wird über $<Gruppennummer>, also z.B. $1 angesprochen. Dabei sind maximal 9 speichernde Gruppen möglich (1-9). Die Gruppe 0 enthält den ursprünglichen String.
  • (?P<name>re) benannte & nummerierte Speichergruppe (submatch)
    • Es ist mir noch nicht gelungen, die benannte Speichergruppe mit ihrem Namen anzusprechen. Die Ansprache über die Nummer funktioniert.
  • (?:re) nicht speichernde Gruppe
  • (?flags) setzt Flags in der aktuellen Speichergruppe
  • (?flags:re) setzt Flags in der nicht speichernden Gruppe
  • i Groß-/Kleinschreibung wird nicht beachtet (Standard: falsch)
  • m Mehrzeilenmodus: ^ und $ stimmen zusätzlich zum Anfang- und Endtext mit der Anfangs- und Endzeile überein (Standard: falsch)
  • s Damit matched der «.» den Zeilenumbruch (Standard: falsch).
  • U Nicht gierig: vertauscht «x*» und «x*?», «x+» und «x+?», etc (Standard: falsch)

Flag werden mit (?imsU) gesetzt, bzw. mit (?-imsU) gelöscht. Es geht z.B. auch (?is-mU), das setzt is und löscht mU.

Text- Zeilen- und Wortgrenzen

Bearbeiten
  • ^ Text- oder Zeilenanfang («m»=true)
  • $ Text- oder Zeilenende (wie «\z» nicht «\Z») («m»=true)
  • \A Textanfang
  • \b bei ASCII Wortgrenze («\w» auf der einen Seite und «\W», «\A», oder «\z» auf der anderen Seite)
  • \B nicht bei ASCII Wortgrenze
  • \z Textende

Escapesequenzen

Bearbeiten
  • \a Glocke (== \007)
  • \f Seitenvorschub (== \014)
  • \t horizontaler Tab (== \011)
  • \n Zeilenumbruch (== \012)
  • \r Wagenrücklauf (== \015)
  • \v vertikaler Tab (== \013)
  • \* Das Zeichen «*», für jedes Zeichen «*»
  • \123 Zeichencode octal (bis zu drei Ziffern)
  • \x7F Zeichencode hexadezimal (genau zwei Ziffern)
  • \x{10FFFF} Zeichencode hexadezimal
  • \C Ein einzelnes Byte, auch wenn im UTF-8 Modus
  • \Q...\E Literaler Text zwischen \Q und \E, einschließlich der Sonderzeichen, die sonst escaped werden müssten.

Elemente von Zeichenklassen

Bearbeiten
  • x Einzelbuchstabe
  • A-Z Zeichenbereich (inklusiv)
  • \d Perl Zeichenklasse
  • [:foo:] ASCII Zeichenklasse «foo»

Benannte Zeichenklassen als Elemente von Zeichenklassen

Bearbeiten
  • [\d] Ziffern (== \d)
  • [^\d] keine Ziffern (== \D)
  • [\D] keine Ziffern (== \D)
  • [^\D] nicht keine Ziffern (== \d)
  • [[:name:]] benannte ASCII Klasse innerhalb der Zeichenklasse (== [:name:])
  • [^[:name:]] benannte ASCII Klasse innerhalb der negierten Zeichenklasse (== [:^name:])

Perl Zeichenklassen (nur ASCII)

Bearbeiten
  • \d Zahlzeichen (== [0-9])
  • \D keine Zahlzeichen (== [^0-9])
  • \s Leerraumzeichen (== [\t\n\f\r ])
  • \S keine Leerraumzeichen (== [^\t\n\f\r ])
  • \w Wortzeichen (== [0-9A-Za-z_])
  • \W keine Wortzeichen (== [^0-9A-Za-z_])

ASCII Zeichenklassen

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


Die Beispiele auf dieser Seite wurden getestet: 02/2022