반응형
다음 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
반응형
'파이썬' 카테고리의 다른 글
파이썬 한 번에 여러 목록을 반복하는 가장 좋은 방법은 무엇입니까? (0) | 2021.02.20 |
---|---|
파이썬 사전에 키를 열거 하시겠습니까? (0) | 2021.02.20 |
파이썬 명령 줄 인수를 읽고 처리하는 방법은 무엇입니까? (0) | 2021.02.20 |
파이썬 이전 및 다음 값에도 액세스하는 Python 루프 (0) | 2021.02.20 |
파이썬 Python에서 다른 목록으로 목록을 인덱싱하려면 어떻게해야합니까? (0) | 2021.02.20 |
댓글