Tutorial: Erste Schritte mit regulären Ausdrücken

Reguläre Ausdrücke 
(regular expressions, RegExp, RegEx, Grep, …)

Viele Aufgaben eines/r Datenjournalist/in kann man mit „Suchen und Ersetzen“ lösen, z.B. in Microsoft Word.

Für komplexere „Suchen und Ersetzen“ gibt es die sogenannten „regulären Ausdrücke“. Diese werden von Microsoft Word leider nicht unterstützt, aber in vielen einfachen Texteditoren, wie z.B. in den kostenlosen OpenSource-Anwendungen TextWrangler für Mac oder Notepad++ für Windows.

Wie man mit „Suchen und Ersetzen“ einen Text bereinigen kann, werde ich nun an einem Beispiel demonstrieren. Dafür habe ich eine Liste gewählt, in der alle Leerzeichen fehlen. Diese Phänomen tritt in der Arbeit öfters auf, z.B. weil der Text mit einer OCR-Software (Bild-zu-Text-Erkennung) erstellt oder aus einem PDF-Dokument kopiert wurde. Hier ein Beispiel; die Liste der ehemaligen Bundespräsidenten der BRD kopiert von der entsprechenden Wikipedia Seite.

 TheodorHeuss(1884–1963)
 HeinrichLübke(1894–1972)
 GustavHeinemann(1899–1976)
 WalterScheel(*1919)
 KarlCarstens(1914–1992)
 RichardvonWeizsäcker(*1920)
 RomanHerzog(*1934)
 JohannesRau(1931–2006)
 HorstKöhler(*1943)
 ChristianWulff(*1959)
 JoachimGauck(*1940)

 

Als erstes kann man alle „(“ ersetzen durch ein Tab, dass von Excel als Spaltenwechsel interpretiert wird.

In Word: ersetze „(“ durch „^t“
Als regulärer Ausdruck: ersetze „(“ durch „t“

 TheodorHeuss      1884–1963)
 HeinrichLübke      1894–1972)
 GustavHeinemann     1899–1976)
 WalterScheel      *1919)
 KarlCarstens      1914–1992)
 RichardvonWeizsäcker  *1920)
 RomanHerzog       *1934)
 JohannesRau       1931–2006)
 HorstKöhler       *1943)
 ChristianWulff     *1959)
 JoachimGauck      *1940

 

Nun die schließenden Klammern entfernen.

In Word: ersetze „)“ durch „“
Als regulärer Ausdruck: ersetze „)“ durch „“

 TheodorHeuss      1884–1963
 HeinrichLübke      1894–1972
 GustavHeinemann     1899–1976
 WalterScheel      *1919
 KarlCarstens      1914–1992
 RichardvonWeizsäcker  *1920
 RomanHerzog       *1934
 JohannesRau       1931–2006
 HorstKöhler       *1943
 ChristianWulff     *1959
 JoachimGauck      *1940

 

Nun die Minuszeichen durch einen Tab ersetzen.

In Word: ersetze „-“ durch „^t“
Als regulärer Ausdruck: ersetze „-“ durch „t“

 TheodorHeuss      1884  1963
 HeinrichLübke      1894  1972
 GustavHeinemann     1899  1976
 WalterScheel      *1919
 KarlCarstens      1914  1992
 RichardvonWeizsäcker  *1920
 RomanHerzog       *1934
 JohannesRau       1931  2006
 HorstKöhler       *1943
 ChristianWulff     *1959
 JoachimGauck      *1940

 

Nun die Mal-Zeichen entfernen.

In Word: ersetze „*“ durch „“
Als regulärer Ausdruck: ersetze „*“ durch „“

 TheodorHeuss      1884  1963
 HeinrichLübke      1894  1972
 GustavHeinemann     1899  1976
 WalterScheel      1919
 KarlCarstens      1914  1992
 RichardvonWeizsäcker  1920
 RomanHerzog       1934
 JohannesRau       1931  2006
 HorstKöhler       1943
 ChristianWulff     1959
 JoachimGauck      1940

 

Die Daten sind nun schon sehr gut strukturiert, aber die Namen sind noch nicht korrekt. Vor- und Nachnamen „kleben“ noch aneinander. Man müsste nach jeden Kleinbuchstaben, auf den ein Großbuchstabe folgt, ein Leerzeichen setzen. Solch eine Aufgabe lässt sich nicht mehr mit einem einfachen „Suchen und Ersetzen“ lösen. Theoretisch müsste man jede Kombination von Klein- und Großbuchstaben suchen. Mit Microsoft Word kommt man hier nicht mehr weiter, aber mit regulären Ausdrücken.

Als regulärer Ausdruck: ersetze „([a-z])([A-Z])“ durch „1 2“

 Theodor Heuss      1884 1963
 Heinrich Lübke     1894 1972
 Gustav Heinemann    1899 1976
 Walter Scheel      1919
 Karl Carstens      1914 1992
 Richardvon Weizsäcker  1920
 Roman Herzog      1934
 Johannes Rau      1931 2006
 Horst Köhler      1943
 Christian Wulff     1959
 Joachim Gauck      1940

 

Durch den oben verwendeten regulären Ausdruck werden beliebige Kombinationen aus Klein- und Großbuchstaben gefunden:

(

[a-z]

)

(

[A-Z]

)

ein beliebiger
Kleinbuchstabe

ein beliebiger
Großbuchstabe

1. Teil in Klammern

2. Teil in Klammern

 

Wenn etwas gefunden wird, wird es ersetzt durch:

1 2

Was im 1. Teil in
Klammern gefunden wurde.

Leerzeichen

Was im 2. Teil in
Klammern gefunden wurde.

 

Reguläre Ausdrücke sind scheinbar kompliziert, aber auch hier ist alles eine Frage der Übung! Wenn man einmal damit anfängt, hat man schnell die ersten Erfolgserlebnisse und lernt dann kontinuierlich weitere Tricks dazu. Aber den ersten Schritt muss man erst einmal machen, und zwar einfach mal nach „Regulären Ausrücken“ googeln und sich die vielen Einführungskurse anschauen, etwa diesen hier.

Hier ein paar weitere Beispiele:

So findet man in einem Text automatisch Internet-Adressen aus Deutschland

http://

[a-z0-9-.]+

.de

http://

Beliebige Kombination aus Kleinbuchstaben,
Zahlen, Minuszeichen und Punkten

.de

 

So findet man in einem Text automatisch E-Mail-Adressen

[a-z0-9-.]+

@

[a-z0-9-.]+

Beliebige Kombination aus
Kleinbuchstaben, Zahlen,
Minuszeichen und Punkten

@

Beliebige Kombination aus
Kleinbuchstaben, Zahlen,
Minuszeichen und Punkten

 

So findet man automatisch 4- und 5-stellige Zahlen, z.B. Postleitzahlen

s

[0-9]

{4,5}

s

Leerzeichen

eine beliebige Ziffer

… und zwar eine Kombination
aus mindestens 4 und maximal 5

Leerzeichen

 

Dieser Text von Michael Kreil steht unter einer Creative Commons-Lizenz (CC BY 3.0 Michael Kreil)

(Siehe auch: Unser Tutorial zu Excel)