2016-05-23 6 views
-4
tekst= "asdadsasdas 192.168.1.1 asdasdadasdasd 10.22.10.5asfasfaff 172.10.5.1safafa" 
import re 
szukane = r'\d{1,3}.+' 
znalezione = re.search(szukane, tekst) 

if znalezione: 
    co= znalezione.group() 
    print(co) 

Ich bin auf der Suche finden Sie die IP-Adresse zu extrahieren, aber nach dem obigen Code ausgeführt wird, erhalte ich:Wie kann ich die IP-Adresse in einem String

192.168.1.1 asdasdadasdasd 10.22.10.5asfasfaff 172.10.5.1safafa 

Warum arbeitet, ist es nicht, was soll ich Veränderung?

+0

Was möchten Sie von String oben genau bekommen? – Shafizadeh

+2

Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren Code veröffentlicht und das Problem genau beschrieben haben. Insbesondere müssen Sie uns sagen, was Sie erwarten. Offensichtlich ist die erste eine IP-Adresse. Enthalten die letzten beiden Einträge IP-Adressen oder nicht? Was ist passiert, als Sie nach einer IP-Adresse regexp online gesucht haben? – Prune

+0

Alle IP-Adressen –

Antwort

2

. ist keine literale Periode in Regex. Es repräsentiert alle Charaktere. Sie müssen es mit einem Backslash entkommen. Vergessen Sie nicht, die letzte Zifferngruppe anzugeben, auf die kein Punkt folgt.

szukane = r'(?:\d{1,3}\.)+(?:\d{1,3})' 

Ergebnis:

>>> re.findall(r'(?:\d{1,3}\.)+(?:\d{1,3})', "asdadsasdas 192.168.1.1 asdasdadasdasd 10.22.10.5asfasfaff 172.10.5.1safafa") 
['192.168.1.1', '10.22.10.5', '172.10.5.1'] 
+0

was genau bedeutet "?:" –

+0

@RadekZ - Es ist eine nicht einfangende Gruppe. Entfernen Sie das '?:' Und Sie werden sehen, dass der Inhalt dieser Gruppe jetzt separat gespeichert wird. – TigerhawkT3

0

Hier, lassen Sie mich search that für Sie ...

aa=re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$",ip) 

Sie müssen die Perioden entkommen ... unter anderem.

Verwandte Themen