Home / LinuxUser / 2011 / 09 / Erste Schritte mit Regular Expressions

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

„Klickbunt auf dem Server? Warum nicht, wenn's hilft!"
(195 Punkte bei 6 Stimmen)
Bezahlstandard
(121 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

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/

Der Autor

Frank Hofmann hat Informatik an der TU Chemnitz studiert. Derzeit arbeitet er in Berlin im Open-Source-Expertennetzwerk Büro 2.0 als Dienstleister mit Spezialisierung auf Druck und Satz. Er gehört zur Linux User Group Potsdam (upLUG).

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 92 Punkte (3 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

title_2013_06

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Terminator
Viele Terminals im Griff mit Terminator
Tim Schürmann, 07.05.2013 10:57, 1 Kommentare

Wer morgens nach dem Einschalten des Rechners erst einmal mehrere Terminals öffnet und sich diese mühevoll auf dem Bildschirm drapiert, der sollte einen Blick auf Terminator werfen. Das kleine...

Aktuelle Fragen

Kontakt via QR code hinzufügen
Herman Sproesser, 17.05.2013 17:46, 3 Antworten
Hi hab in der aktuellen ausgabe 06.2013 den artikel über QR Codes gelesen. Ich hab nartürlich...
Dateimanager Dolphin, wo legt er die Datei Kommentare ab?
Uwe Heine, 16.05.2013 15:19, 1 Antworten
Suse Linux 12.1 - KDE 4.7.2 / Dolphin 1.7. Ich habe bei vielen Dateien über Dolphin Kommentare...
wie baut man Kernel Module so, dass sie mit jedem Kernel laden?
GoaSkin , 22.04.2013 10:22, 1 Antworten
Hallo, baut man anhand eines Kernel-Sources Module, nutzt Linux im Normalfall eine strikte V...
Problem beim Installieren von SuSe 12.3
Georg Prokert, 14.04.2013 00:04, 16 Antworten
Hallo, auf meinem neuem Laptop (Acer Aspire V3-771, Intel Core i5-3230 M, Intel HD Graphics 4...
lvm wieder loswerden
Peter Dibbern, 11.04.2013 16:28, 4 Antworten
Ich habe sämtliche alten Kisten ausgeschlachtet und aus der Teilen einen Rechner zusammengeschrau...