Seite 1 von 1

re.search Funktion: Abgrenzung mit . ?

Verfasst: Montag 6. Dezember 2021, 09:15
von _corn_
Moin Zusammen,
ich habe eine IP-Adresse vorliegen und möchte diese Klassifizieren. Dafür benötige ich nur den ersten Teil der IP-Adresse. Diese will ich per re.search herausfinden.

Code: Alles auswählen

string = "123.21.231.2"
found= re.search('(.+?).', string).group(1)
print(found)
Leider funktioniert das nicht so ganz: wenn ich .2 eingebe, funktoniert es. Oder wenn ich "123b21.231.2" und dann b eingebe funktioniert es, jedoch nicht alleine durch einen Punkt. Wie kann ich das ändern oder wie muss ich das alternativ machen

Re: re.search Funktion: Abgrenzung mit . ?

Verfasst: Montag 6. Dezember 2021, 09:51
von __deets__
Den Punkt mit einem davor gestellten \ zu einem „echten“ Punkt machen. String Escape Regeln beachten.

Re: re.search Funktion: Abgrenzung mit . ?

Verfasst: Montag 6. Dezember 2021, 09:56
von Sirius3
Statt da mit regulären Ausdrücken drauf los zu gehen, benutze ein Paket, das dafür extra geschrieben worden ist:

Code: Alles auswählen

import ipaddress
address = ipaddress.IPv4Address('123.21.231.2')
address.packed[0]

Re: re.search Funktion: Abgrenzung mit . ?

Verfasst: Montag 6. Dezember 2021, 10:40
von __blackjack__
Und selbst wenn man das mit Zeichenkettenoperationen machen will, würde man vielleicht nicht gleich mit regulären Ausdrücken darauf losgehen um etwas am ersten Punkt zu trennen:

Code: Alles auswählen

In [4]: "123.21.231.2".partition(".")                                           
Out[4]: ('123', '.', '21.231.2')

Re: re.search Funktion: Abgrenzung mit . ?

Verfasst: Montag 6. Dezember 2021, 12:34
von _corn_
Danke an alle :D