Zum Inhalt springen

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

Aus Wikibooks


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

Flags

[Bearbeiten]
  • 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