[Python-de] Regulärer Ausdrücke

Stefan J. Betz stefan_betz at gmx.net
Sam Jan 3 22:49:59 CET 2004


Am Sat, Jan 03, 2004 um 17:01:56 CET, Stefan Schwarzer schrieb:
> Ich habe noch eine Anmerkung. Der "richtige" reguläre Ausdruck lässt
> immer noch unsinnige IPs zu, z. B. 192.168.327.999 (die einzelnen
> Bestandteile dürfen nur zwischen 0 und 255 liegen).

Das ist mir klar, das ist allerdings ein Problem das mir auch erst jetzt
eingefallen ist :-(

> Du kannst zur Kontrolle der IP aber auch ganz ohne Regex auskommen
> (ungetesteter Code):
> 
> parts = ip.split('.')
> try:
>     numbers = [int(part) for part in parts if 0 <= int(part) <= 255]
>     if len(numbers) != 4:
>         raise ...
> except ValueError:
>     raise ...

Sowas in der Art wäre auch ne Lösung, vor allem weil die Funktion ja eh
nur 1x aufgerufen wird (beim Programmstart), von daher wäre dieses
Konstrukt sicherlich sinnvoll...

> Eine andere Möglichkeit ist, den Regex mit Gruppen zu verwenden und
> die einzelnen Bestandteile zu untersuchen:

Ich erwarte eigentlich von der Funktion nur das sie mir sagt ob der
übertragene String ne IP ist, mehr net, mit der obigen Funktion kann ich
sie dann sogar noch einigermaßen auf gültigkeit Prüfen lassen...

> Noch ein Hinweis, falls du IPv6 einbeziehen willst: Das obige gilt für
> IPv4; IPv6-IPs sind wiederum anders aufgebaut.

Das ist mir klar, ich verwenden zwar kein IPv6 weil ich nicht so recht
den weis wie das so richtig Funktioniert (ich hasse Technik die ich
nicht verstehe, also immer her mit ein paar netten Deutschen Linux+IPv6 URL's)

mfg Betz Stefan
PS: Schon interresant zu erfahren wie verschiedene Leute an Probleme
herangehen würden, ich hätte da einfach mein RE genommen und gut ist,
aber es geht halt IMMER auch anders...
-- 
Das Telefonnetz... Unendliche Weiten... Dies sind die Abenteuer eines
genervten Internet-Surfers... Weit von zu Hause entfernt stößt er in
Bereiche des Systems vor, die vorher noch niemand gesehen hat...
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde geschreddert...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 248 bytes
Beschreibung: nicht verfügbar
URL         : http://starship.python.net/pipermail/python-de/attachments/20040103/6403a146/attachment.pgp