Eine HTTP-URL auseinandernehmen

(Auszug aus "Reguläre Ausdrücke" von Jeffrey E. F. Friedl)

Jetzt haben wir eine URL. Wir testen nun, ob es sich um eine HTTP-URL handelt, und wenn ja, zerpflücken wir sie in ihre Komponenten Servername, Portnummer und Pfad. Weil wir bereits wissen, dass es sich um die eine oder andere Art von URL handelt, ist die Aufgabe viel einfacher, als wenn wir in einem beliebigen Text eine URL identifizieren müssten. Das ist viel schwieriger; wir werden uns diese Aufgabe weiter hinten in diesem Kapitel vornehmen.

Zu einer gegebenen URL brauchen wir nur die Bestandteile zu identifizieren. Der Server oder Hostname ist alles nach dem ˹^http://˼, aber vor dem nächsten Slash (wenn es denn einen solchen gibt), der Pfad ist alles danach: ˹^http://([^/]+)(/.*)?$˼

Die Portnummer haben wir vergessen. Diese ist optional, steht vor dem Slash und wird vom Servernamen durch einen Doppelpunkt abgetrennt: ˹^http://([^/:]+(:(\d+))?)(/.*)?$˼

Das folgende Perl-Programm zerlegt eine HTTP-URL nach diesem Rezept:

if ($url =~ m{^http://([^/:]+(:(\d+))?)(/.*)?$}i)
{
    my $host = $1;
    my $port = $3 || 80;  # $3, falls definiert und nicht leer, sonst 80.
    my $pfad = $4 || "/"; # $4, falls definiert und nicht leer, sonst "/".
    print "Host: $host\n";
    print "Port: $port\n";
    print "Pfad: $pfad\n";
} else {
    print "Keine HTTP-URL\n";
}

  

<< 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