문제
- URL이 올바르면 True, 잘못되었으면 False 출력
- url은 http:// or https://로 시작
- 도메인은 도메인.최상위도메인 형식이며 영문 대소문자, 숫자, -로 되어 있어야 함
- 도메인 이하 경로는 /로 구분하고, 영문 대소문자, 숫자, -, _, ., ?, =을 사용함
정답
import re
p = re.compile('^https?://[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+/[a-zA-Z0-9-_/=.?]+$')
url = input()
print(p.match(url) !=None )
기본정보
- compile 만들기
- url 변수에 input()으로 입력값을 받는다
- print(p.match(url) !=None)으로 None 이 아닐때만 출력
1단계 시작 문자열 htttp:// or https:// 검사하기
#문자열 표시인 '' 는 전체의 앞과 뒤에 붙음으로 생략
https?:// # 를 만들어 s가 1개만 있거나 없는 두 수를 모두 충족
2단계 도메인 . 최상위도메인 값 검사하기
[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+
- 가운데 보면 \. 이 있다 도메인과 최상위 도메인을 구별하는 구간이다.
- [a-zA-Z0-9-]+ 는 기본 도메인만 판별 (-도 사용가능하다)
- [a-zA-Z0-9-.]+ 은 앞과 같지만 최상위 도메인은 여러단계일 수 있으므로 . 도 포함시켰다
3단계 도메인 이하 값 검사하기
/[a-zA-Z0-9-_/=.?]+$
- /를 시작으로 도메인 이하값을 구분 지어준다
- 도메인 이하값의 조건은 대소문자, 숫자, -, _, ., ?, = 이였지만 여러개의 중복을 허용하기위해 /도 포함시켰다.
- 도메인 이하값은 마지막에 나오기 때문에 마지막에 $를 붙였다.
사실 이문제는 이해하고 풀었지만
정규표현식의 반만 이해하고 활용을 못하는 단계이다.
하지만 도메인 검사값이나 이메일 검사값은 실제로 계속 쓰일 것 같기에 블로깅한다.
'Python > Python 문제' 카테고리의 다른 글
잘못된 케이스로 알아보는 Parameter (0) | 2022.05.29 |
---|---|
(3)별로 사각형 간단하게 그리기 (0) | 2022.05.06 |
(2)포켓몬 종류 찾기 (리스트 & 세트) (0) | 2022.05.06 |
생애 첫 코딩테스트 문제 (0) | 2022.04.28 |
(3)클래스 메서드와 속성으로 시계 만들기 (0) | 2022.04.14 |