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 |
ein beliebiger |
||||
|
1. Teil in Klammern |
2. Teil in Klammern |
||||
Wenn etwas gefunden wird, wird es ersetzt durch:
|
\1 |
\2 | |
|
Was im 1. Teil in |
Leerzeichen |
Was im 2. Teil in |
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, |
.de |
So findet man in einem Text automatisch E-Mail-Adressen
|
[a-z0-9\-\.]+ |
\@ |
[a-z0-9\-\.]+ |
|
Beliebige Kombination aus |
@ |
Beliebige Kombination aus |
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 |
Leerzeichen |
Dieser Text von Michael Kreil steht unter einer Creative Commons-Lizenz (CC BY 3.0 Michael Kreil)
[Siehe auch: Unser Tutorial zu Excel)





