re - problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gast

Dienstag 19. August 2003, 23:20

Hi ,
ich bin am verzweifeln was mach ich bei falsch , warum funktioniert
das nicht eigentlich müsste er doch die gefundenen groups ausgeben.

import re
def extract():
proxy_list = "blabla199.105.122.121as"

pattern=re.compile(r'^(\d{2,3})\.(\d{2,3})\.(\d{2,3})\.(\d{2,3})$')
match = pattern.search(proxy_list).groups()
print match
Fehler Meldung ist "NoneType " object has no attribute "groups"
Das ganze soll also aus einer liste die ips raussuchen ...
Bin für jede Hilfe Dankbar
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Mittwoch 20. August 2003, 07:09

Hallo!
Anonymous hat geschrieben: proxy_list = "blabla199.105.122.121as"
pattern=re.compile(r'^(\d{2,3})\.(\d{2,3})\.(\d{2,3})\.(\d{2,3})$')
Mit ^ und $ hast Du festgelegt, dass der String zwingend mit \d anfangen und aufhören muss. Tut Dein Beispiel-String aber nicht.
Jan
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Donnerstag 21. August 2003, 11:32

Hallo

Versuch es mal mit:

Code: Alles auswählen

proxy_list = "blabla199.105.122.121as"
print re.findall("[\d{3}\.?]{15}",proxy_list)
Harry
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Donnerstag 21. August 2003, 11:51

Hallo!
HarryH hat geschrieben:

Code: Alles auswählen

print re.findall("[\d{3}\.?]{15}",proxy_list)
Na, das ist aber ziemlich verquer. Der OP will ja wohl IPs erkennen, deren Zahlen 2- oder 3-stellig sein dürfen. Mit [] bildest Du nur eine Zeichenmenge, und die besteht bei Dir aus den Zeichen '0' bis '9', '{', '}', '.' und '?'. Danach enthielten "blabla?...?{{???}}???as" und "blabla...23..23..4...as" also gültige IPs, "blabla123.123.12.12as" dagegen nicht.

Der Regexp des OPs war ja ok. Er muss nur eben ^ und $ weglassen.

Jan
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Donnerstag 21. August 2003, 13:26

Hallo Jan

Du hattest wirklich recht! Das war nicht besonders gut überlegt von mir.

Harry
Qbi
User
Beiträge: 57
Registriert: Mittwoch 25. Juni 2003, 14:04
Kontaktdaten:

Donnerstag 21. August 2003, 16:03

Anonymous hat geschrieben: proxy_list = "blabla199.105.122.121as"
pattern=re.compile(r'^(\d{2,3})\.(\d{2,3})\.(\d{2,3})\.(\d{2,3})$')
Eine einfache Methode, um IP-Adressen zu erkennen, ist:

Code: Alles auswählen

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
Wenn alle deine Beispiele wie oben sind, sollte das relativ gut passen. Muss du wirklich genau die IP-Adressen erkennen, müsste hier noch etwas nachbessern.
Jens Kubieziel http://www.kubieziel.de
http://www.kubieziel.de/pythonwiki/
Antworten