2012-07-02 3 views

답변

2

Regex!

re.sub('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}','CENSORED_IP',data) 

이 값은 999.999.999.999와 같습니다. 그것이 문제라면 좀 더 복잡한 정규 표현식을 얻어야합니다. 또한 IPv4 주소에서만 작동합니다. 만 유효 IP의에

:

re.sub('(?:(?: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]?)','CENSORED_IP',data) 

출처 : IPv4의 Regex Source

+0

OK! 감사합니다. 솔루션으로 anwser를 점검 할 것입니다! 고맙습니다! – ant0nisk

+0

편집 된 REGEX에 감사드립니다! – ant0nisk

3

당신이 Regular-Expression.info에서 제공하는 정규식을 사용하여 해결합니다. 이렇게하면 IP 주소가 실제로 유효한지 확인할 수 있습니다.

IP 주소를 일치시키는 것은 정규식 복잡성과 정확성 간의 절충안의 또 다른 좋은 예입니다. \ b \ d {1,3}. \ d {1,3}. \ d {1,3}. \ d {1,3} \ b는 괜찮은 IP 주소와 일치하지만 999.999.999.999 마치 유효한 IP 주소입니다. 이것이 문제가되는지 여부는 정규식을 적용하려는 파일 또는 데이터에 따라 다릅니다. IP 주소의 4 자리 숫자를 모두 0..255로 제한하려면이 복잡한 짐승을 사용할 수 있습니다 : \ b (25 [0-5] | 2 [0-4] [0-9] | [01]? [0 [0-9] [0-9]?). (25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9] 0-9] | [01]? [0-9] [0-9]?) \ b이 정규 표현식을 RegexBuddy (한 줄에있는 모든 것)로 분석하십시오. 긴 정규 표현식은 IP 주소의 4 개 숫자 각각을 캡처 그룹에 저장합니다. 이 그룹을 사용하여 IP 번호를 추가로 처리 할 수 ​​있습니다.

개별 숫자에 액세스 할 필요가없는 경우 정규 표현식을 사용하여 정규식을 다음과 같이 줄일 수 있습니다. \ b (?:(?:(25):0 [0-4] [0- 9] | [01]? [0-9] [0-9]?)) {3} (?: 25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \ b이 정규식을 RegexBuddy로 분석하십시오. 마찬가지로 정규 표현식을 \ b (? : \ d {1,3}.) {3} \ d {1,3}로 줄여서 표현할 수 있습니다. RegexBuddy로 정규 표현식을 분석하십시오.

+0

OK .... 어쨌든 이전 anwser에서 내 anwser있어 .. 어쨌든 고마워! – ant0nisk

관련 문제