Zitat:
/(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/
Sollte man nicht nehmen. Und zwar wären damit auch Werte über 255 der einzelnen Blöcke möglich. Auch hat der Ausdruck ziemliche Probleme mit IPv6
Für IPv4 sollte etwas in der Art gehen:
[code=pseudo]
([12]?\d{,2})(\.([12]?\d{,2})){3}
[/code]
zu IPv6 gibt es auch einige RFC-Dokumente, in denen sogar der reguläre Ausdruck einschließlich IPv4 Kompatibilität beschrieben steht. Wurde (glaube ich) sogar hier im
Forum schon mal behandelt. Ansonsten kann dir skoch sicher die passende RFC sagen, der hat sich vor einiger Zeit mal ausgiebig damit beschäftigt.
Edit: Ich seh gerade, dass mein Regex auch Werte 00 bis 299 zulässt. Ich werde später noch einen anderen posten.
@klasse7darg: Eigentlich sollte dein Ausdruck ein brauchbares Ergebnis bringen, wenn er "greedy" arbeitet Ansonsten musst du die Reihenfolge der Or-Conditions ändern. Für die Logdatei würde auch dieser hier ausreichen. Allerdings ohne Test auf gültige IP:
[code=pseudo]
/DST=(^\w+)/
[/code]
Und zwar wird aus der Zeile der Abschnitt extrahiert, der direkt nach "DST=" steht, bis zum nächsten Leerzeichen.