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\dPerl Zeichenklasse\Dnegierte 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 mehrx+ein oder mehr «x», bevorzugt mehrx?null oder ein «x», bevorzugt einx{n,m}«n» oder «n»+1 oder ... oder «m» «x», bevorzugt mehrx{n,}«n» oder mehr «x», bevorzugt mehrx{n}genau «n» «x»x*?null oder mehr «x», bevorzugt wenigerx+?ein oder mehr «x», bevorzugt wenigerx??null oder ein «x», bevorzugt nullx{n,m}?«n» oder «n»+1 oder ... oder «m» «x», bevorzugt wenigerx{n,}?«n» oder mehr «x», bevorzugt wenigerx{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]iGroß-/Kleinschreibung wird nicht beachtet (Standard: falsch)mMehrzeilenmodus: ^ und $ stimmen zusätzlich zum Anfang- und Endtext mit der Anfangs- und Endzeile überein (Standard: falsch)sDamit matched der «.» den Zeilenumbruch (Standard: falsch).UNicht 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)\ATextanfang\bbei ASCII Wortgrenze («\w» auf der einen Seite und «\W», «\A», oder «\z» auf der anderen Seite)\Bnicht bei ASCII Wortgrenze\zTextende
Escapesequenzen
[Bearbeiten]\aGlocke (== \007)\fSeitenvorschub (== \014)\thorizontaler Tab (== \011)\nZeilenumbruch (== \012)\rWagenrücklauf (== \015)\vvertikaler Tab (== \013)\*Das Zeichen «*», für jedes Zeichen «*»\123Zeichencode octal (bis zu drei Ziffern)\x7FZeichencode hexadezimal (genau zwei Ziffern)\x{10FFFF}Zeichencode hexadezimal\CEin einzelnes Byte, auch wenn im UTF-8 Modus\Q...\ELiteraler Text zwischen \Q und \E, einschließlich der Sonderzeichen, die sonst escaped werden müssten.
Elemente von Zeichenklassen
[Bearbeiten]xEinzelbuchstabeA-ZZeichenbereich (inklusiv)\dPerl 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]\dZahlzeichen (== [0-9])\Dkeine Zahlzeichen (== [^0-9])\sLeerraumzeichen (== [\t\n\f\r ])\Skeine Leerraumzeichen (== [^\t\n\f\r ])\wWortzeichen (== [0-9A-Za-z_])\Wkeine 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