如何從給定網站提取所有IP:PORT?我有這個當前的正則表達式模式,但我認爲它並沒有全部取得。提取IP:端口
或者它是一個更好的方法嗎?
PATTERN = '((?:1?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:1?\d{1,2}|2[0-4]\d|25[0-5]):\d{2,5}';
如何從給定網站提取所有IP:PORT?我有這個當前的正則表達式模式,但我認爲它並沒有全部取得。提取IP:端口
或者它是一個更好的方法嗎?
PATTERN = '((?:1?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:1?\d{1,2}|2[0-4]\d|25[0-5]):\d{2,5}';
這將工作,如果有總是一個端口的IP如下:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\:\d{2,5}\b
匹配:
1.2.3.4:80
001.002.003.004:2345
255.255.255.255:13245
不匹配:
1.2.3
1.2.3:01
1.2.3.4.5:99
299.299.299.299:123
你的第二個反例是一個有效的IP地址和端口。 IPv4地址中不一定有四個組件。 –
正則表達式不是一個魔杖,你應該在與琴絃有關的每一個問題上揮動。在這種情況下,您使用的語言可能支持URL解析。
在PHP中,您使用parse_url()
函數解析URL。 http://php.net/manual/en/function.parse-url.php
在Perl中,您使用URI :: URL類http://search.cpan.org/dist/URI/
如果你真的想用一個正則表達式,Perl的模塊http://search.cpan.org/dist/Regexp-Common/已建正則表達式爲你檢測到IP地址。
無論您使用何種語言,都有人已經編寫,調試並測試過已經做到了您想要的代碼。使用現有的代碼而不是編寫自己的代碼。
我的意思是特意在Delphi中。我知道它是如何完成在PHP .. –
然後也許這可以幫助你http://stackoverflow.com/questions/124170/a-delphi-freepascal-lib-or-function-that-emulates-the-phps-function- parse-url –
除了RegEx,您可以使用Internet Direct(Indy)設備IdURI。它可以將任何URI解析爲其協議部分。它支持IPv4和IPv6。該單位相當獨立。
MyURI := TIdURI.Create('http://127.0.0.1:8080');
try
MyHost := MyURI.Host;
MyPort := MyURI.Port;
finally
MyURI.Free;
end;
屬性暴露有關URI的詳細信息:
property Bookmark : string read FBookmark write FBookMark;
property Document: string read FDocument write FDocument;
property Host: string read FHost write FHost;
property Password: string read FPassword write FPassword;
property Path: string read FPath write FPath;
property Params: string read FParams write FParams;
property Port: string read FPort write FPort;
property Protocol: string read FProtocol write FProtocol;
property URI: string read GetURI write SetURI;
property Username: string read FUserName write FUserName;
property IPVersion : TIdIPVersion read FIPVersion write FIPVersion;
又見這樣的警告,但我認爲這不會影響簡單的主機:端口URI解析:
https://stackoverflow.com/a/502011/80901
我建議下載最新版本的Indy以獲得最新修復程序。
你可以發佈如何使用IdURI從給定的HTML代碼中提取IP:PORT。如果它更友善,那麼這可能是更好的解決方案。但我從來沒有這樣做過,爲什麼評論。 –
+1。非常好。 (它沒有回答問題的提問,但仍然是一個很好的建議。) –
是的,它不需要對問題做任何事情。這是爲了解析單個字符串到IP,PORT等。我要求解析IP代碼的HTML代碼:PORT匹配。 –
你爲什麼回滾Delphi標籤?它根本不是Delphi相關的! – TLama
在RegEx上特定的Delphi是什麼? – TLama
是的,關於更新的通知(添加*「或者它是一種更好的方法來提取IP:PORT在Delphi中?」,這反過來改變了原來的問題)是在我發佈該評論之後發佈的。 – TLama