Hej Leute,

reguläre Ausdrücke sind super praktisch, um ein Muster in einem Text oder Vektor zu finden und ggf. zu ersetzen. Z.B. kann man ziemlich einfach überprüfen, ob eine Eingabe einer normalen Email-Adresse entspricht. In R sieht das dann so aus:

 

Aber ganz langsam und der Reihe nach. Ihr seht schon, so ganz trivial sieht so ein regulärer Ausdruck nicht aus. Im Grunde ist er aber ganz logisch aufgebaut und gar nicht so schwer.

 

Aufbau eines regulären Ausdrucks

Grundsätzlich ist ein regulärer Ausdruck einfach ein String, also eine Zeichenkette. Dabei kommt die Power aber von den Steuerzeichen. Diese erlauben es, komplexe Abfragen wie die obige, ob es sich um eine gültige Email-Adresse handelt, zu generieren.

 

Am besten lernt man anhand von Beispielen. Also los geht’s:

Das war im Prinzip schon der erste reguläre Ausdruck nämlich ‚ ‚. Ok, nicht sonderlich spektakulär, gebe ich zu. Aber der einfachste Fall ist einfach eine ganz normale Zeichenkette:

Jetzt kommt die Power der Steuerungszeichen:

  • Mit dem senkrechten Strich (pipe=’|‘) lassen sich Oder-Abfragen erzeugen
  • Mit runden Klammern () bildet man Gruppen
  • Mit eckigen Klammern [] gibt man Mengen an
  • Der Punkt steht für ein beliebiges Zeichen

Jetzt wird es komplexer. Mit Quantifizierern kann man angeben, wie häufig eine Gruppe/ein Ausdruck vorkommen darf. Man kann dabei Mindestvorkommen und Maximalvorkommen definieren.

Willst Du den Anfang oder Ende eines Strings überprüfen, brauchst Du die Steuerzeichen „Dach“ und „Dollar“. Damit kannst Du Abfragen machen wie „Fängt die Zeichenkette mit dem folgenden Buchstaben/Wort/… an“

 

 

Sonderzeichen in regulären Ausdrücken in R

Die Frage, wie man denn nun einen Punkt, eine Klammer oder ein Fragezeichen in einem pattern vergleichen kann, stellt sich häufig. In R ist die Lösung ganz einfach, ein doppelter Backslash, also z.B. \\. für einen Punkt, \\? für ein Fragezeichen usw.

String-Suche und Ersetzen in R

Eigentlich sind die im Beispiel vorgekommen R-Befehle schon die wichtigsten zu den regulären Ausdrücken.

Mit den Befehlen grep und grepl wird ein Pattern in einem String-Vektor gesucht. Dabei gibt grep die Indizes mit einem match zurück, grepl gibt einen Vektor mit TRUE/FALSE-Werten zurück.

Mit den R-Befehlen sub und gsub lassen sich solche Pattern ersetzen. Dabei ersetzt sub das erste Vorkommen, gsub alle Vorkommen des Patterns. Meistens verwende ich gsub.

Mit strsplit könnt Ihr einen oder mehrere String anhand von Trennzeichen aufsplitten. Meistens genügt hier das Trennzeichen, aber die Funktion nimmt auch reguläre Ausdrücke an. Sehr nützlich, wenn man eine unsaubere csv-Datei hat, die mehrere Trennzeichen als Spaltentrenner enthält.

Es gibt noch mehr Funktionen, nämlich regmatches, regexpr, gregexpr und regexec, aber ehrlich gesagt benutze ich diese fast nie.

Fazit also: Merkt Euch die Befehle grepl, gsub und strsplit, mehr braucht Ihr normalerweise nicht.

 

 

Dateien eines Verzeichnisses in R anzeigen lassen

Der Befehl list.files zeigt alle Dateien und Unterordner eines Verzeichnisses an. Dabei kann man mittels des Parameters pattern die Dateinamen mittels regulärer Ausdrücke filtern. Im Databraineo R-Glossar findet Ihr einen Eintrag zu list.files mit Erklärung und Beispielen.

 

Online RegEx-Tools

Wer ein bisschen mit regulären Ausdrücken experimentieren will oder mal eben schnell checken, ob , der eingegebene String funktioniert, findet auf https://regexr.com/ oder https://regex101.com/ Online-Tools zum Nachschauen und Testen.

Viel Spaß beim Ausprobieren,

Euer Holger