본문 바로가기
파이썬

파이썬 정규식을 사용하여 파이썬에서 IP 주소 유효성 검사

by º기록 2021. 2. 20.
반응형

다음 IP 주소 유효성 검사에서 유효한 IP 주소인지 확인하고 싶습니다. 아래 re를 사용하여 어떻게 할 수 있습니까?

>>> ip="241.1.1.112343434" 
>>> aa=re.match(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^0-9]",ip)
>>> aa.group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'

 

해결 방법

 

대신 앵커를 사용하십시오.

aa=re.match(r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$",ip)

이를 통해 문자열의 시작과 끝이 정규식의 시작과 끝에서 일치하는지 확인합니다. (기술적으로는 .match () 메서드에 암시 적이므로 시작 ^ 앵커가 필요하지 않습니다).

그런 다음 결과에 액세스하기 전에 정규식이 실제로 일치하는지 확인하십시오.

if aa:
    ip = aa.group()

물론 이것은 IP 주소를 확인하는 좋은 방법이 아닙니다 (적절한 방법은 gnibbler의 대답을 확인하십시오). 그러나 정규식은 더 큰 문자열에서 IP 주소를 감지하는 데 유용 할 수 있습니다.

ip_candidates = re.findall(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b", ip)

여기서 \ b 단어 경계 앵커는 숫자가 각 세그먼트에 대해 3을 초과하지 않도록합니다.

 

참조 페이지 https://stackoverflow.com/questions/10086572

 

 

반응형

댓글