StringRegExp TCP/IP-Adresse inkl. Port Patter, Need help

  • Hallo liebe Community,

    ich stehe vor einem kleinem Problem was ich nicht gelösst bekomme.
    Ich habe 2 Platter.
    Zum einen Für die bestimmung von gültigen TCP/IP-Adressen und zum anderen für den Port.

    TCP/IP-Adresse Patter
    Code
    ^((\d|\d\d|[0-1]\d\d|2[0-4]\d|25[0-5])\.(\d|\d\d|[0-1]\d\d|2[0-4]\d|25[0-5])\.(\d|\d\d|[0-1]\d\d|2[0-4]\d|25[0-5])\.(\d|\d\d|[0-1]\d\d|2[0-4]\d|25[0-5]))$
    Port Patter
    Code
    ^(0|([1-9]\d{0,3}|[1-5]\d{4}|[6][0-5][0-5]([0-2]\d|[3][0-5])))$


    Wie füge ich diese Beiden Patter zusammen sodass ich folgende Adress typen finde?
    Also der : müsste da noch irgendwie zwischen.

    Adress Beispiele

    210.6.192.22:9415
    24.30.46.180:8118
    219.142.62.13:8080
    203.124.152.164:80


    Danke schonmal
    Lg

    • Offizieller Beitrag

    Das heißt Pattern und nicht Plattern :D

    Wie sieht dein String aus? Steht alles nacheinander drin? Gibt es irgendwelche @CR oder @LF Zeichen in dem String?
    Wie hättest du gerne die Rückgabe? IP und Port in einem Array oder willst du ein getrenntes Array für IP und eines für den Port?

  • Platter kenne ich nur von Festplatten...

    Beispiel
    [autoit]

    Global $sPatternIP = "(?:(?:25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)(?(?=\.?\d)\.)){4}"
    Global $sPatternPort = "(6553[0-5]|655[0-2][0-9]\d|65[0-4](\d){2}|6[0-4](\d){3}|[1-5](\d){4}|[1-9](\d){0,3})"
    Global $sCombinedPattern = "^" & $sPatternIP & ":" & $sPatternPort & "$"

    [/autoit] [autoit][/autoit] [autoit]

    Global $sTest = "210.6.192.22:9415"

    [/autoit] [autoit][/autoit] [autoit]

    If StringRegExp($sTest, $sCombinedPattern) Then
    MsgBox(0,"", "Gültige IP & Portnummer")
    Else
    MsgBox(0,"", "Ungültige IP oder Portnummer")
    EndIf

    [/autoit]

    Edit: Wenn es ums Suchen und nicht ums Validieren ging dann eher so:

    Suchen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sPatternIP = "(?:(?:25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)(?(?=\.?\d)\.)){4}"
    Global $sPatternPort = "(?:0|(?:[1-9]\d{0,3}|[1-5]\d{4}|[6][0-5][0-5]([0-2]\d|[3][0-5])))"
    Global $sCombinedPattern = "(" & $sPatternIP & ":" & $sPatternPort & ")"

    [/autoit] [autoit][/autoit] [autoit]

    Global $sTest = BinaryToString(InetRead("http://www.autoit.de/index.php?page=Thread&threadID=26358"))

    [/autoit] [autoit][/autoit] [autoit]

    $aRegExFounds = StringRegExp($sTest, $sCombinedPattern, 3)
    If Not @error Then _ArrayDisplay($aRegExFounds, "Funde")

    [/autoit]

    Edit 2: Will man die Adresse und Portnummer getrennt behandeln dann so:

    Subpatterns benutzen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $sPatternIP = "(?:(?:25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)(?(?=\.?\d)\.)){4}"
    Global $sPatternPort = "(?:0|(?:[1-9]\d{0,3}|[1-5]\d{4}|[6][0-5][0-5]([0-2]\d|[3][0-5])))"
    Global $sCombinedPattern = "(" & $sPatternIP & "):(" & $sPatternPort & ")"

    [/autoit] [autoit][/autoit] [autoit]

    Global $sTest = BinaryToString(InetRead("http://www.autoit.de/index.php?page=Thread&threadID=26358"))

    [/autoit] [autoit][/autoit] [autoit]

    For $i In StringRegExp($sTest, $sCombinedPattern, 4)
    MsgBox(0,"Funde", "Gesamtfund: " & $i[0] & @CRLF & _
    "IP-Adresse: " & $i[1] & @CRLF & _
    "Port-Nummer: " & $i[2])
    Next

    [/autoit]

    2 Mal editiert, zuletzt von AspirinJunkie (22. März 2011 um 15:58)

  • So sieht mein Text aus ausdem ich gerne geweils Ip und Port als Ganzes haben würde.

    Beispiel Text

    210.6.192.22:9415 Nein 4 5.27 Sek. Hong Kong 6% 15:14
    206.51.7.146:80 Nein 3 34.04 Sek. United States 72% 15:13
    202.159.20.29:8080 Nein 3? 12.79 Sek. Indonesia 84% 15:13
    188.136.170.134:8080 Ja 3? 31.72 Sek. Iran, Islamic Republic of 97% 15:13
    122.183.81.227:80 Nein 4? 9.73 Sek. India 83% 15:13
    200.129.180.61:3128 Nein 3? 5.81 Sek. Brazil 85% 15:12
    24.30.46.180:8118 Nein 4 66.79 Sek. United States 91% 15:12
    219.142.62.13:8080 Ja 1 41.67 Sek. China 63% 15:12
    203.124.152.164:80 Ja 3 48.57 Sek. India 79% 15:11
    189.115.161.220:3128 Nein 4? 49.38 Sek. Brazil 91% 15:11
    110.139.96.115:3128 Nein 4? 22.08 Sek. Indonesia 53% 15:11
    220.133.73.64:80 Nein 4? 4.93 Sek. Taiwan 97% 15:11
    78.111.8.1:80 Ja 3? 12.87 Sek. Iran, Islamic Republic of 93% 15:11
    67.19.20.162:3128 Nein 5? 19.12 Sek. United States 89% 15:11
    75.72.186.79:8080 Nein 4 53.43 Sek. United States 62% 15:11
    201.86.213.141:8080 Nein 4? 11.02 Sek. Brazil 86% 15:11
    200.37.186.146:80 Nein 3? 9.74 Sek. Peru 84% 15:11
    187.11.229.55:80 Nein 4? 15.56 Sek. Brazil 69% 15:11
    189.14.234.26:8080 Nein 3? 18.95 Sek. Brazil 95% 15:11
    200.220.198.50:8080 Ja 3? 17.02 Sek. Brazil 94% 15:11
    200.220.205.1:8080 Ja 3? 16.02 Sek. Brazil 98% 15:11
    88.250.51.134:8086 Nein 4 58.63 Sek. Turkey 37% 15:11
    218.191.98.19:9415 Nein 3 5.92 Sek. Hong Kong 4% 15:11
    218.207.217.245:80 Nein 3? 11.96 Sek. China 87% 15:11
    190.144.136.242:8080 Nein 5? 0.72 Sek. Colombia 97% 15:11
    213.180.89.165:4432 Nein 3 25.69 Sek. Sweden 20% 15:11
    118.96.8.196:8080 Nein 4? 7.75 Sek. Indonesia 62% 15:10
    118.96.201.146:8080 Nein 4? 6.54 Sek. Indonesia 63% 15:10
    58.147.191.150:3128 Nein 3? 19.17 Sek. Indonesia 99% 15:10
    218.248.240.190:8080 Nein 4? 19.73 Sek. India 81% 15:10
    64.91.172.20:8090 Nein 4 46.61 Sek. United States 6% 15:10
    173.160.74.249:8080 Nein 4 21.65 Sek. United States 84% 15:10
    124.161.63.194:80 Ja 5 57.46 Sek. China 29% 15:10
    120.202.89.142:3128 Nein 3? 14.84 Sek. China 73% 15:10
    202.57.69.84:80 Nein 4 6.22 Sek. Philippines 73% 15:10
    88.87.95.91:8080 Nein 4 33.19 Sek. Russian Federation 46% 15:10
    200.196.234.30:8080 Ja 3? 34.64 Sek. Brazil 83% 15:10
    118.96.148.72:8080 Nein 3? 11.55 Sek. Indonesia 98% 15:10
    190.201.174.110:8080 Nein 4? 1.49 Sek. Venezuela 96% 15:10
    190.144.128.154:8080 Nein 3? 5.53 Sek. Colombia 100% 15:10
    89.187.142.113:3128 Nein 3? 24.87 Sek. Czech Republic 94% 15:10
    110.5.98.162:80 Nein 3? 13.65 Sek. Indonesia 98% 15:10
    200.143.204.003:3128 Ja 3? 79.94 Sek. Brazil 84% 15:10
    123.127.163.27:8080 Nein 3? 40.69 Sek. China 67% 15:10
    219.139.158.60:8080 Nein 3? 16.31 Sek. China 99% 15:10
    211.162.70.66:3128 Nein 5? 4.81 Sek. China 88% 15:10
    200.55.223.243:8080 Nein 3 56.26 Sek. Chile 83% 15:10
    92.247.12.242:8080 Nein 3 45.97 Sek. Bulgaria 59% 15:10
    69.59.89.122:8080 Nein 4 32.5 Sek. United States 84% 15:10
    89.105.123.18:80 Nein


    Also nicht Adresse und Port einzeln sondern immer zusammen als Ganzes.

    • Offizieller Beitrag

    Und was ist am 2. Beispiel von AspirinJunkie für dich umpassen? Da wird genau das gemacht was du willst.