dr.disk Geschrieben 3. Juli 2002 Teilen 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!: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. Juli 2002 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 3. Juli 2002 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jaraz Geschrieben 3. Juli 2002 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 4. Juli 2002 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.