Hallo,
ich möchte in einem Text alle IPv6 Adressen suchen. Ich habe auch schon etwas zusammen gebaut. Aber leider funktioniert es nicht. Ich vermute, dass es mit dem Pattern zusammen hängt. Wenn ich das Pattern für die IPv4 verwende ist alles super. Aber die Pattern für IPv6 funktioniert nicht. habe auch die hier im Forum vorhandenen Pattern getestet. Leider gehen die auch nicht.
Ich hoffe es hat jemand einen Tipp bzw. eine Lösung für mich.
Gruß Ingo
AutoIt
#include <Array.au3>
Local $sText
Local $aErgebnis
$sText = "Temporäre IPv6-Adresse. . . . . . : 2003:cc:dcaa:9434:ac3a:8900:3340:3cc1 " & _
"7.25.23.2 " & _
"Verbindungslokale IPv6-Adresse . : fe80::dcaa:f15e:50a4:aa09%13"
$aErgebnis = _StringSearchIPv6($sText)
For $i=0 To UBound($aErgebnis)-1
_ArrayDisplay($aErgebnis[$i])
Next
Func _StringSearchIPv6($sText)
Local $aResult
Local $aTEMP
Local $sPattern = "(?x) " & @CRLF & _
"([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}| # 1:2:3:4:5:6:7:8 " & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,7}:| # 1:: 1:2:3:4:5:6:7:: " & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}| # 1::8 1:2:3:4:5:6::8 1:2:3:4:5:6::8 " & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}| # 1::7:8 1:2:3:4:5::7:8 1:2:3:4:5::8 " & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}| # 1::6:7:8 1:2:3:4::6:7:8 1:2:3:4::8 " & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}| # 1::5:6:7:8 1:2:3::5:6:7:8 1:2:3::8 " & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}| # 1::4:5:6:7:8 1:2::4:5:6:7:8 1:2::8 " & @CRLF & _
"[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})| # 1::3:4:5:6:7:8 1::3:4:5:6:7:8 1::8 " & @CRLF & _
":((:[0-9a-fA-F]{1,4}){1,7}|:)| # ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 :: " & @CRLF & _
"fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}| # fe80::7:8%eth0 fe80::7:8%1 (link-local IPv6 addresses with zone index)" & @CRLF & _
"::(ffff(:0{1,4}){0,1}:){0,1} # " & @CRLF & _
"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3} # " & @CRLF & _
"(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])| # ::255.255.255.255 ::ffff:255.255.255.255 ::ffff:0:255.255.255.255 (IPv4-mapped IPv6 addresses and IPv4-translated addresses)" & @CRLF & _
"([0-9a-fA-F]{1,4}:){1,4}: # " & @CRLF & _
"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3} # " & @CRLF & _
"(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]) # 2001:db8:3:4::192.0.2.33 64:ff9b::192.0.2.33 (IPv4-Embedded IPv6 Address)" & @CRLF & _
")? "
;~ Local $sPattern = "(?x) " & @CRLF & _
;~ "((?:(?:25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)(?(?=\.?\d)\.)){4}\b) # erste IP-Adresse (mit Wertebereichscheck) " & @CRLF & _
;~ "(?: # Beginn der optionalen Netzmaske " & @CRLF & _
;~ " \s?/?\s? # das optionale Trennzeichen mit eventuellen Leerzeichen " & @CRLF & _
;~ " \b( # falls etwas existiert soll es auch als Group gematcht werden " & @CRLF & _
;~ " ([0-9]|[0-2][0-9]|3[0-2])(?!\.) # Die Netzmaske als einfache Zahl (=Anzahl der 1-Bits in der Maske)" & @CRLF & _
;~ " | " & @CRLF & _
;~ " (?:(?:0|128|192|224|240|248|252|254)\.0\.0\.0)|(?:255\.(?:(?:(?:0|128|192|224|240|248|252|254)\.0\.0)|(?:255\.(?:(?:(?:0|128|192|224|240|248|252|254)\.0)|255\.(?:0|128|192|224|240|248|252|254|255))))) # Die Netzmaske als IP-Maske " & @CRLF & _
;~ " )(?:[^\d]|$) " & @CRLF & _
;~ ")?"
;im Text nach IP oder Netzwerke suchen
$aResult = StringRegExp($sText, $sPattern, 4)
Return $aResult
EndFunc
Alles anzeigen