2012-12-19 4 views
0

주어진 웹 사이트에서 모든 IP : PORT를 어떻게 추출 할 수 있습니까? 나는이 현재 Regex PATTERN을 가지고 있지만 모든 것을 잡아 내지는 않는다고 생각한다.IP 추출 : PORT

아니면 더 좋은 방법 일까?

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}'; 
+0

왜 델파이 태그를 롤백 했습니까? 델파이와 전혀 관련이 없습니다! – TLama

+0

RegEx에 특정한 Delphi는 무엇입니까? – TLama

+0

예, 업데이트에 대한 알림 (* 또는 "델파이에서 IP : PORT를 추출하는 더 좋은 방법입니까?"*, 원래 질문을 어쨌든 변경 한)은 내가이 주석을 게시 한 후에 나타납니다. – TLama

답변

3

는 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 
+2

두 번째 반례는 유효한 IP 주소 및 포트입니다. IPv4 주소에는 정확히 4 개의 구성 요소가있을 필요는 없습니다. –

0

정규 표현식은 현과 관련된 모든 문제에서 물결이 일렁이는 마술 지팡이가 아닙니다. 이 경우 사용하는 언어에서 URL 구문 분석을 지원할 수 있습니다.

PHP에서는 parse_url() 기능을 사용하여 URL을 구문 분석합니다. 당신이 IP 주소를 감지하는 당신이 정말 정규식을 사용하려면 http://php.net/manual/en/function.parse-url.php

펄에서, 당신은 URI :: URL 클래스를 http://search.cpan.org/dist/URI/

를 사용, 펄 모듈 http://search.cpan.org/dist/Regexp-Common/ 정규 표현식에 이미 내장하고있다.

당신이 사용하는 언어가 무엇이든, 누군가 이미 이미 원하는 코드를 작성하고, 디버그하고 테스트했습니다. 자체 코드를 쓰는 대신 기존 코드를 사용하십시오.

+0

델파이에서 특별히 의미합니다. 나는 PHP에서 어떻게 이루어 졌는지 알 수 있습니다. –

+1

그러면 아마도 도움이 될 것입니다. http://stackoverflow.com/questions/124170/a-delphi-freepascal-lib-or-function-that-emulates-the-phps-function- parse-url –

4

RegEx 대신 인터넷 다이렉트 (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

을 최신 수정판을 받으려면 최신 버전의 인디를 다운로드하는 것이 좋습니다.

+0

IdURI를 사용하여 주어진 HTML 코드에서 IP : PORT를 추출하는 방법을 게시 할 수 있습니까? CPU가 더 친숙하다면 실제로 더 나은 해결책이 될 수 있습니다. 하지만 그 전에 논평하는 이유는 없었습니다. –

+1

+1. 아주 좋아. (묻는 질문에는 대답하지 않지만 여전히 좋은 제안입니다.) –

+0

예, 질문에는 아무런 변화가 없습니다. 이것은 개별 문자열을 IP, PORT 등으로 구문 분석하기위한 것입니다. IP : PORT와 일치하는 HTML 코드를 구문 분석하도록 요청했습니다. –

관련 문제