Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

Hallo,

das Problem ist ein Faß ohne Boden, da es zu viele Sonderfälle gibt :D

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

Geschrieben

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.

Geschrieben

Jau, hast recht.

Ich dachte immer regexp wären zeitlich aufwendig.

Dem scheint aber nicht so.

kleiner Test: :D


$_="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

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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...