Zu den Beispielen
(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)
Dieses Kapitel behandelt ein paar typische Probleme - zum Beispiel, wie man Benutzereingaben validiert, wie man mit E-Mail-Kopfzeilen umgeht, wie man normalen Text in HTML konvertiert - und wandert dabei durch die Landschaft der regulären Ausdrücke. Während ich die Programme aufbaue, denke ich laut über die regulären Ausdrücke nach. Wir werden Konstrukte und Features benutzen, die egrep nicht kennt. Auf unserer kleinen Reise werden wir außerdem etliche Abstecher zu anderen wichtigen Orten machen.
Am Ende des Kapitels und auch in den späteren Kapiteln gebe ich Beispiele in ganz verschiedenen Programmiersprachen, in PHP, Java und in Visual Basic .NET, aber die meisten Beispiele sind doch in Perl. In jeder dieser Sprachen und auch in vielen anderen werden reguläre Ausdrücke auf wesentlich kompliziertere Art benutzt als in egrep. Sie werden also bei allen Beispielprogrammen neue Dinge lernen. Ich beginne vor allem deshalb mit Perl, weil dort die regulären Ausdrücke fest in die Sprache integriert sind. Außerdem hat Perl einige äußerst kompakte Konstrukte zur Behandlung von Daten, die vieles vom unvermeidlichen »Drumherum« sehr stark vereinfachen; und wir wollen uns ja auf die regulären Ausdrücke konzentrieren.
Um einmal so ein Konstrukt zu demonstrieren, rufe ich das Beispiel mit ResetSize/SetSize von Probleme aus der Praxis lösen in Erinnerung. Ich hatte Perl benutzt, und zwar folgende Zeile:
% perl -0ne 'print "$ARGV\n" if s/ResetSize//ig != s/SetSize//ig' *
(Das brauchen Sie jetzt wirklich nicht zu verstehen. Ich wollte nur sicherstellen, dass Sie von der Kürze der Lösung beeindruckt sind.)
Ich mag Perl, aber es ist auch wichtig, dass wir uns nicht zu stark in diese Programmiersprache verstricken. Das Buch konzentriert sich schließlich auf reguläre Ausdrücke. Oder, wie ein Informatik-Professor in der Erstsemester-Vorlesung sagte: »Sie lernen hier Informatik, aber wir werden trotzdem Pascal dazu benutzen.« (Anmerkung: Pascal ist eine traditionelle Programmiersprache, die ursprünglich für Lehrzwecke entwickelt wurde. Diese Analogie verdanke ich William F. Maton bzw. seinem Professor.)
Da dieses Kapitel keine Kenntnisse von Perl voraussetzt, werde ich so viel über Perl erläutern, dass die Beispiele verständlich werden. (Unter Perl, wo es um die kniffligen Details von Perl geht, wird allerdings einiges Wissen über Perl vorausgesetzt.) Auch wenn Sie einige Programmiererfahrung aus anderen Sprachen haben, wird Ihnen Perl zunächst sehr merkwürdig vorkommen, weil es sehr kompakt ist und wenige Zeichen sehr viel Bedeutung tragen. Die Beispiele benutzen daher nicht die kniffligsten Konstrukte von Perl. Sie sind deswegen aber nicht »schlecht«, nur weil sie nicht immer so formuliert sind, wie das ein erfahrener Perl-Programmierer tun würde. Ich habe versucht, die Beispiele in einer Form zu schreiben, dass sie beinahe wie Pseudo-Code aussehen, aber immer noch als Perl-Programme lauffähig sind. Aber wir werden ein paar spektakuläre Anwendungen von regulären Ausdrücken sehen.
Eine kleine Einführung in Perl
Perl ist eine sehr leistungsfähige interaktive Skriptsprache, die von Larry Wall in den späten 80er Jahren entwickelt wurde. Viele Ideen in Perl stammen aus anderen Sprachen. Die Art, wie mit Text und mit regulären Ausdrücken umgegangen wird, stammt aus awk und sed, beides selbst Sprachen, die mit »traditionellen« Programmiersprachen wie C oder Pascal wenig gemeinsam haben.
Perl gibt es für viele Systeme: DOS/Windows, MacOS, OS/2, VMS, natürlich Unix und andere. Perl hat eine Neigung zum Verarbeiten von Text und wird besonders häufig zur Programmierung im World Wide Web eingesetzt. Auf perl.org finden Sie Informationen dazu, wie Sie Perl für Ihr System bekommen.
Dieses Buch behandelt Perl Version 5.8, aber die Beispiele funktionieren mit jeder Version nach 5.005.
Wir beginnen mit einem einfachen Problem:
$celsius = 30;
$fahrenheit = ($celsius * 9 / 5) + 32; # Fahrenheit berechnen
print "$celsius C ist $fahrenheit F.\n"; # beide Temperaturen ausgeben
Wenn dieses Programm ausgeführt wird, gibt es Folgendes aus:
30 C ist 86 F.
Einfache Variablen wie $fahrenheit und $celsius beginnen immer mit einem Dollarzeichen und können Zahlen oder beliebige Mengen von Text enthalten (in diesem Beispiel nur Zahlen). Kommentare beginnen mit einem # und reichen bis an das Ende der Zeile.
Wenn Sie eine Sprache wie C, C#, Java oder VB.NET kennen, ist es besonders erstaunlich, dass Variablen zwischen Anführungszeichen mitten in Strings auftreten dürfen. Innerhalb des Strings "$celsius C ist $fahrenheit F.\n" wird jede Variable durch ihren Wert ersetzt (die Variable wird »interpoliert«, heißt das im Perl-Jargon). Das \n ist das Zeilenende-Zeichen Newline.
Die Kontrollstrukturen sehen in Perl ähnlich aus wie in vielen anderen Programmiersprachen:
$celsius = 20;
while ($celsius <= 45)
{
$fahrenheit = ($celsius * 9 / 5) + 32; # Fahrenheit berechnen
print "$celsius C ist $fahrenheit F.\n";
$celsius = $celsius + 5;
}
Der von while kontrollierte Teil wird so lange ausgeführt, wie die Bedingung (in diesem Fall: $celsius <= 45) wahr ist.
Wenn wir das in eine Datei namens temps schreiben, können wir das Programm direkt von der Kommandozeile aus ausführen:
% perl -w temps
20 C ist 68 F.
25 C ist 77 F.
30 C ist 86 F.
35 C ist 95 F.
40 C ist 104 F.
45 C ist 113 F.
Die -w-Option ist weder nötig noch hat sie direkt etwas mit regulären Ausdrücken zu tun. Sie teilt Perl mit, das Programm genauer zu prüfen und bei fragwürdigen Dingen eine Warnung auszugeben. Fragwürdig ist beispielsweise die Verwendung von nicht initialisierten Variablen - Variablen brauchen in Perl nicht deklariert zu werden. Die Option steht hier vor allem, weil es eine gute Gewohnheit ist, sie immer zu benutzen.
Das ist schon alles für den Anfang. Im Weiteren werden wir uns damit beschäftigen, wie man in Perl reguläre Ausdrücke verwendet.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema Reguläre Ausdrücke bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright der deutschen Ausgabe © 2008 by O’Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Reguläre Ausdrücke" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
O’Reilly Verlag GmbH & Co. KG, Balthasarstr. 81, 50670 Köln