<aside>
💬 lv0
, 정규표현식
주어진 URL에서 프로토콜, 도메인, 경로, 그리고 쿼리스트링을 추출하는 함수를 작성해주세요. URL은 프로토콜://도메인/경로?쿼리스트링
형식을 따릅니다. 쿼리스트링은 선택적이며, 없는 경우도 고려해야 합니다.
예를 들어, URL "https://www.weniv.co.kr/path/to/resource?user=abc&lang=en"에서 함수는 {'protocol': 'https', 'domain': 'www.weniv.co.k', 'path': '/path/to/resource', 'query': 'user=abc&lang=en'}
를 반환해야 합니다.
import re
만 입력하여 한 번 실행하면 그 다음 코드부터 import re
를 하지 않아도 사용 가능합니다. solution 함수 내에 re 모듈을 사용하셔도 애러가 나지 않습니다. 코드 내에는 solution 함수만 있어야 하므로 이 2개가 있지 않도록 주의해주세요. 어려우신 분은 제주코딩베이스캠프
유튜브 채널 33번 문제 영상을 참고해주세요.입력 (URL 문자열) | 출력 (프로토콜, 도메인, 경로, 쿼리스트링 딕셔너리) |
---|---|
"http://www.weniv.co.k" | {'protocol': 'http', 'domain': 'www.weniv.co.k', 'path': '', 'query': ''} |
"https://www.weniv.co.kr/path/to/resource?user=abc&lang=en" | {'protocol': 'https', 'domain': 'www.weniv.co.kr', 'path': '/path/to/resource', 'query': 'user=abc&lang=en'} |
"ftp://ftp.weniv.co.kr/folder?page=1" | {'protocol': 'ftp', 'domain': 'ftp.weniv.co.kr', 'path': '/folder', 'query': 'page=1'} |
각 URL에서 프로토콜, 도메인, 경로, 쿼리스트링을 추출하여 딕셔너리 형태로 반환합니다.
</aside>
import re
def solution(data):
pattern = r"(?P<protocol>https?|ftp)://(?P<domain>[^/\\s]+)(?P<path>/[^?]*|)(\\?(?P<query>[^#\\s]*))?" #1 패턴 정의
match = re.match(pattern, data) #2 match 함수 사용
if match:
return {
"protocol": match.group("protocol"),
"domain": match.group("domain"),
"path": match.group("path") if match.group("path") else "",
"query": match.group("query") if match.group("query") else "",
} #3 결과 반환
else:
return None
패턴 정의
패턴
을 구분하여 그룹화
해줍니다. <protocol>
, <domain>
, <path>
, <query>
로 그룹이름을 지정합니다.
match 함수 사용
match
함수를 사용하여 패턴
과 일치하는 문자열
을 찾습니다.
결과 반환
매칭
되는 문자열이 존재한다면 key
가 그룹의 이름이며 value
가 그에 해당하는 그룹의 값으로 구성되어 있는 딕셔너리
를 반환합니다.
group 함수
기본 형태: group()
개념: 정규표현식에 의해 매칭된 문자열 중 특정 그룹을 반환하는 함수입니다.
import re
# 정규표현식 패턴 설정
pattern = r"(\\d{3})-(\\d{4})-(\\d{4})" # 전화번호 패턴
# 주어진 문자열
text = "전화번호는 010-1234-5678 입니다."
# 정규표현식을 사용하여 문자열에서 패턴과 일치하는 부분을 찾기
match = re.search(pattern, text)
print(match.group(1)) # 출력: 010
import re
def solution(data):
result = re.match(r\\"(?P<protocol>.*)://(?P<domain>.[^/]*)(?P<path>[^?]*)\\\\??(?P<query>.*)\\", data) **#1 패턴정의, #2 match 함수 사용**
return result.groupdict() **#3 결과 반환**
패턴 정의
패턴
을 구분하여 그룹화
해줍니다. <protocol>
, <domain>
, <path>
, <query>
로 그룹이름을 지정합니다.
match 함수 사용
match
함수를 사용하여 패턴
과 일치하는 문자열
을 찾습니다.
결과 반환
groupdict
함수를 사용하여 딕셔너리
형태로 결과를 반환해줍니다.
match 함수