Veröffentlicht 3. Juli 200223 j 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!:
3. Juli 200223 j 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
3. Juli 200223 j Autor 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.
3. Juli 200223 j 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
4. Juli 200223 j Autor 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.