dr.disk Geschrieben 3. Juli 2002 Geschrieben 3. Juli 2002 Hallo, kann jemand von Euch mir den regulären Ausdruck schicken, mit dem ich eine IP-Adresse auf Gültigkeit prüfen kann? Sitze schon ein wenig an diesem Problem und entdecke immer wieder Lücken in meinem Ausdruck Danke!:
Jaraz Geschrieben 3. Juli 2002 Geschrieben 3. Juli 2002 Hallo, das Problem ist ein Faß ohne Boden, da es zu viele Sonderfälle gibt Ohne Programmlogik wirst du da wohl nicht machen können. Also am besten an den Punkten trennen und die einzelnen Werte einzeln überprüfen. Gruß Jaraz
dr.disk Geschrieben 3. Juli 2002 Autor Geschrieben 3. Juli 2002 Naja, aber mit Split wollte ich nicht arbeiten. Was passiert, wenn ich folgenden String erhalte? '...... ganz viele davon ...', da braucht mein splitt ja ewig (und vom Speicher wollen wir mal gar nicht reden)... Ich hab aber inzwischen eine Lösung gefunden (hier ein Codefragment in Perl): $re_digit = q{((0?\d?\d)|(1\d\d)|(2[01234]\d)|(25[012345]))}; $re_ip = qq{^$re_digit\\.$re_digit\\.$re_digit\\.$re_digit\$}; print "Yes\n" if <> =~ m/$re_ip/o; Funktioniert wunderbar, trozdem Danke für Deine Hilfe. Falls es jemand interessieret, wie ich auf die Lösung kam soll er hier mal einen Beitrag reinsetzen.
Jaraz Geschrieben 3. Juli 2002 Geschrieben 3. Juli 2002 Jau, hast recht. Ich dachte immer regexp wären zeitlich aufwendig. Dem scheint aber nicht so. kleiner Test: $_="000.255.255.255"; print time."\n"; for($i = 1;$i <= 1000000;$i++){ $r = 0 if(grep{/^\d+$/and$_<256}split/\./)==4; } print time."\n"; for($i = 1;$i <= 1000000;$i++){ $re_digit = q{((0?\d?\d)|(1\d\d)|(2[0-4]\d)|(25[0-5]))}; $re_ip = qq{^$re_digit\\.$re_digit\\.$re_digit\\.$re_digit\$}; $r = 0 if $_ =~ m/$re_ip/o; } print time."\n"; Deine 12345 habe ich mal in 0-5 geändert. Das: "$r = 0" ist nur für die gültigkeit der if Abfragen. Ich weiss jetzt auch, warum man Perl immer als "write-only" bezeichnet. :bimei Gruß Jaraz
dr.disk Geschrieben 4. Juli 2002 Autor Geschrieben 4. Juli 2002 Original geschrieben von Jaraz Ich dachte immer regexp wären zeitlich aufwendig. RegEx können schon sehr zeitintensiv werden wenn man sie nicht sauber formuliert. Bei einer schön strukturierten RegEx ist der Zeitvorteil gegenüber anderen Lösungen, wie Du selbst erkannt hast, auf jeden Fall deutlich spürbar.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden