2013-08-05 2 views
4

파일의 모든 IP 주소를 찾고 싶습니다. 문제는 주소 127.0.0.1을 제외해야한다는 것입니다. 나는 리눅스 bash에서 grep을 사용하고있다. 여기 내가 이미 가지고있는 것입니다 :루프백을 제외한 IP를 잡는 정규식 필요

[0-9]+.\.[0-9]+\.[0-9]+\.[0-9]+ 
+1

무엇을 시도 했습니까? 어떤 정규식의 맛을 사용하고 있습니까? 또한 도트를 이스케이프 처리해야합니다. 힌트 : 부정적인 선견자를 사용하십시오. – HamZa

+1

@HamZa 그는 우리에게 그가 시도한 것을 보여주었습니다. – arshajii

+2

당신은 어떤 언어를 사용하고 있습니까? – SmokeyPHP

답변

4

이 할 것입니다 : 내가 {1,3}로는 수량을 변경 한 http://regexr.com/3g3ov

^(?!127\.0{1,3}\.0{1,3}\.0{0,2}1$)((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]?)$ 

테스트합니다. (?!127\.0{1,3}\.0{1,3}\.0{0,2}1$)

당신은 127.0.0.1

((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}과 함께 처음 세 자리 그룹이다 (결국 일부 0 패딩)이 없어야한다는 것을 의미 자신의 ., (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)가 마지막 숫자 그룹입니다.

그리고 처음에는 ^ 정규식을 고정하고 문자열은 $으로 끝납니다.

당신이 (그래서 127.*.*.*) 모든 루프백을 제외 할 경우

^(?!127)((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]?)$ 

두 개의 정규 표현식에이 http://www.regular-expressions.info/examples.html 정규 표현식 마이너스 비 캡처 그룹에 대한 부분을 기반으로 http://regexr.com/3g3os

테스트합니다.

여기에 내가 자리의 첫 번째 그룹은 127 ((?!127))

이 정규식이 완료되면 그것은 256.256.256.256 같은 것들을 허용하지 않습니다 아니라는 것을에만 테스트해야하지만 IPv4의 만입니다.

1

사실, 모든 서브넷 127.0.0.0/8은 루프백을 위해 예약되어 있습니다 (그래서, 127.45.78.32은 루프백 주소)입니다.

^127\. 

을하고 정상 IP 정규식과 일치하는 경우 다음 확인 : 따라서, 먼저 확인하는 데 필요한 정규 표현식을 통해 문제를 해결하기 위해, 그 입력 문자열이 일치하지 않습니다.

관련 문제