Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Парсер IP из текста (http://forum.oszone.net/showthread.php?t=164517)

morgan1991 24-01-2010 16:10 1328572

Парсер IP из текста
 
Здравствуйте!
Помогите пожалуйста никак не могу разобраться с шаблонами.
Куда ставить скобки, что нужно экранировать и т.д. вообще даже такое простое выражение, нужно выковырять с текста IP такого вида: 127.0.0.1:8080, IP и порт меняется.
Никак не могу сделать. Объясните пожалуйста...

Creat0R 24-01-2010 16:58 1328615

Слишком общий заголовок темы, переименуй во что нибудь более специфическое.

По поводу выковыривания IP:

Код:

$sString = @IPAddress2 & ":8080"
$GetValidIp = _StringIsValidIP($sString, -1, 1)
ConsoleWrite($GetValidIp)

Func _StringIsValidIP($sIP_String, $iRet_Flag=-1, $iRet_Port=0)
    If $iRet_Flag <> -1 Then Return StringRegExp($sIP_String, '\A([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\z')

    Local $sPattern = '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*'
    If $iRet_Port Then $sPattern = '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?::\d{4})?).*'

    Return StringRegExpReplace($sIP_String, $sPattern, '\1')
EndFunc


morgan1991 24-01-2010 18:48 1328712

Ничего не понял...
Есть текст html
В нём есть эти IP, прокси.
Нужно считать их в массив.
Код:

$Mass = StringRegExp($Text, $Pattern, 3)
Чем заполнить переменную $Pattern???

Creat0R 24-01-2010 19:07 1328727

Цитата:

Цитата morgan1991
Чем заполнить переменную $Pattern? »

Код:

$sPattern = '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?::\d{4})?).*'

morgan1991 24-01-2010 20:03 1328780

Или я дурак или лыжи по асфальту не едут....
Код:

    Local $TempHtml = _ProxyDownload("proxies.my-proxy.com", "80", "http://proxies.my-proxy.com/")
    Local $TempFormula = StringRegExp($TempHtml, '([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(?::\d{*})?).*', 3)
    For $i = 0 To UBound($TempFormula)-1 Step +1
        FileWrite("ttttttt.txt", $TempFormula[$i] & @CRLF)
    Next

Возвращает:
Код:

5.0.2.263
211.162.208.50
82.79.131.126


madmasles 24-01-2010 21:56 1328856

morgan1991,

Вот здесь Две функции CreatoRа

Я их чуть-чуть переделал под себя(CreatoR, извини, пожалуйста):

Код:

#include <Inet.au3>

$url1 = "http://www.proxylist.net/list/pl/0/1"
$sFile = "proxy.txt"
$sTest = _INetGetSource($url1)
If $sTest <> "" Then
    $IPsArray = _StringToIPArray($sTest)
    For $i = 1 To $IPsArray[0] Step 2
        FileWrite($sFile, $IPsArray[$i] & @CRLF)
    Next
EndIf

Func
_StringToIPArray($sString)
    Local $avArray = StringRegExp($sString, '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5})', 3)
    Local $avRetArr[UBound($avArray) + 1], $iUbound

    For $i = 0 To UBound($avArray) - 1
        If _StringIsValidIP($avArray[$i]) Then
            $avRetArr[0] += 1
            $avRetArr[$avRetArr[0]] = $avArray[$i]
        EndIf
    Next

    If
$avRetArr[0] = 0 Then Return SetError(1, 0, 0)

    ReDim $avRetArr[$avRetArr[0] + 1]
    Return $avRetArr
EndFunc  ;==>_StringToIPArray

Func _StringIsValidIP($sIP_String, $iRet_Flag = -1)
    If $iRet_Flag <> -1 Then Return StringRegExp($sIP_String, '\A(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5})\z')

    Return StringRegExpReplace($sIP_String, '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}).*', '\1')
EndFunc  ;==>_StringIsValidIP

В приведенном примере у меня железно выбирает все IP-адреса с указанного адреса.


Время: 09:48.

Время: 09:48.
© OSzone.net 2001-