Schnipseljagd
Erste Schritte mit Regular Expressions
Suchen und Ersetzen
Neben dem Auffinden von Zeichenketten unterstützen reguläre Ausdrücke auch das Ersetzen sowie Translationen, also buchstabenweise Ersetzungen.
Eine Aufgabe von Autoren redaktioneller Beiträge besteht darin, auf eine einheitliche Schreibweise von Begriffen und Abkürzungen zu achten. Per Hand verursacht das einigen Aufwand, komfortabler funktionierte es per Regex. Um etwa alle Vorkommnisse des Begriffes Wifi durch WLAN zu ersetzen, reicht folgende Zeile in Perl:
$string =~ s/Wifi/WLAN/g;
Mit dem Kommando sed wenden Sie die Ersetzung komfortabel auf eine komplette Datei an:
$ sed --quiet "s/Wifi/WLAN/g; w kopie.txt" original.txt
Die Option --quiet unterdrückt dabei Ausgaben auf der Standardausgabe. Der zweite Parameter enthält durch ein Semikolon getrennte Kommandos an Sed. Beim ersten davon handelt es sich um einen regulären Ausdruck zur Textersetzung. Dabei steht das das Kürzel g am Ende des Regex für "global" und sorgt für eine Ersetzung aller Suchtreffer (Wifi), die in der Datei original.txt vorkommen. Den korrigierten Text speichert Sed anschließend mittels des zweiten Kommandos (w für "write") in der Datei kopie.txt, das Originaldokument bleibt unverändert.
Translationen gelingen in Perl mit tr anstelle von s. Um beispielsweise alle Kleinbuchstaben durch Großbuchstaben zu ersetzen, genügt folgender Aufruf:
$string =~ tr/[a-z]/[A-Z]/;
Bei Sed heißt das entsprechende Kommando y und kann nicht nur einzelne Buchstaben, sondern auch ganze Zeichenketten gleicher Länge ersetzen.
Fazit
Reguläre Ausdrücke helfen dabei, komplizierte Aufgaben bei der Verarbeitung von Zeichensequenzen wesentlich zu vereinfachen. Mit vergleichsweise wenig Aufwand lassen sich eine Textsuche und Ersetzung realisieren. Ein tieferes Verständnis dieser Materie vermittelt das als Standardwerk zum Thema geltende "Mastering Regular Expressions" von Jeffrey E.F. Friedl [6]. Daneben eignet sich "Sed und Awk" von Dale Dougherty und Arnold Robbins [7] als weiterer, höchst informativer Lesestoff.
Glossar
POSIX
Portable Operating System Interface for Unix (DIN/EN/ISO/IEC 9945, [8]). Eine von der IEEE definierte Familie von Interoperabilitätsstandards für Application Programming Interfaces (APIs) und Software-Tools. POSIX ist prinzipiell nicht auf unixoide Systemen beschränkt; so unterstützt beispielsweise auch die Windows-NT-Systemfamilie POSIX bis zu einem gewissen Grad.
ICANN
Internet Corporation for Assigned Names and Numbers. Die 1998 gegründete Organisation entscheidet unter anderem über die Grundlagen der Verwaltung der Top-Level-Domains (.com, .net, .org, .de, …) im Internet [9].
Infos
[1] Häufigste Nachnamen in Deutschland: http://de.wikipedia.org/wiki/Liste_der_häufigsten_Familiennamen_in_Deutschland
[2] "Python Regular Expression HOWTO": http://docs.python.org/howto/regex.html
[3] Modul re (Python): http://docs.python.org/library/re.html
[4] "Perl Regular Expressions": http://www.troubleshooters.com/codecorn/littperl/perlreg.htm
[5] "How to Find or Validate an Email Address": http://www.regular-expressions.info
[6] Regex von A bis Z: Jeffrey E.F. Friedl, "Mastering Regular Expressions", O'Reilly 1996, ISBN 978-0596528126
[7] Regex in Sed und Awk: Dale Dougherty und Arnold Robbins, "Sed und Awk", O'Reilly 1997, ISBN 1-56592-225-5
[8] POSIX-Standard: http://standards.ieee.org/develop/wg/POSIX.html
[9] ICANN: http://www.icann.org/en/tlds/



