<aside>
💬 lv0
, 정규표현식
주어진 문자열에서 전화번호를 찾아 표준 형식으로 변환하는 함수를 작성해주세요. 전화번호는 10자리 또는 11자리 숫자(예: 01012345678, 03112345678)입니다. 변환된 형식은 XXX-XXXX-XXXX
형식이어야 합니다(예: 010-1234-5678, 031-1234-5678).
import re
만 입력하여 한 번 실행하면 그 다음 코드부터 import re
를 하지 않아도 사용 가능합니다. solution 함수 내에 re 모듈을 사용하셔도 애러가 나지 않습니다. 코드 내에는 solution 함수만 있어야 하므로 이 2개가 있지 않도록 주의해주세요. 어려우신 분은 제주코딩베이스캠프
유튜브 채널 33번 문제 영상을 참고해주세요.입력 (문자열) | 출력 (변환된 전화번호 문자열) |
---|---|
"항상 여기로 연락주세요 01012345678." | 항상 여기로 연락주세요 "Contact me at 010-1234-5678." |
"제 전화번호는 0311234567, 06412345678 입니다." | "제 전화번호는 031-1234-567, 064-1234-5678 입니다." |
"No numbers here." | "No numbers here." |
문자열 내의 전화번호가 표준 형식으로 변환됩니다. 문자열에 전화번호가 없는 경우 원본 문자열이 그대로 반환됩니다.
</aside>
import re
def solution(data):
pattern = r"(\\d{3})(\\d{3,4})(\\d{4})" **#1 패턴 정의**
return re.sub(pattern, r"\\1-\\2-\\3", data) **#2 sub 함수 사용**
패턴 정의
정규표현식
을 통한 전화번호 패턴
을 찾습니다. 이 때 (\\d{3})
, (\\d{3,4})
, (\\d{4})
로 각각 그룹화를 하여 패턴을 정의합니다.
sub 함수 사용
(\\d{3})
은 \1, (\\d{3,4})
은 \2, (\\d{4})
은 \3로 그룹화 패턴을 지칭해주고 있습니다. 이를 통해 sub 함수를 사용하여 반환합니다.
re.sub
기본 형태: re.sub()
개념: 정규표현식을 사용하여 문자열에서 패턴과 일치하는 부분을 다른 문자열로 대체하는 함수입니다.
import re
# 주어진 문자열
text = "Hello Wolrd Hello"
# 정규표현식 패턴 설정
pattern = r"Hello"
# sub 함수를 사용하여 패턴 대체
new_text = re.sub(pattern, "Hi", text) # 출력: Hi Wolrd Hi
def solution(data):
def format_phone_number(match): **#1 번호 길이에 따른 형식 지정**
phone_number = match.group(0)
if len(phone_number) == 10:
return f"{phone_number[:3]}-{phone_number[3:7]}-{phone_number[7:]}"
elif len(phone_number) == 11:
return f"{phone_number[:3]}-{phone_number[3:7]}-{phone_number[7:]}"
else:
return phone_number
pattern = re.compile(r'\\b\\d{10,11}\\b') **#2 패턴 지정**
result = pattern.sub(format_phone_number, data) **#3 sub 함수 사용**
return result **#4 결과 반환**
번호 길이에 따른 형식 지정
format_phone_number
함수를 만들어 주어진 전화번호를 받아서 형식을 지정합니다. 그 후, 번호의 길이
에 따라 형식을 지정해줍니다.
패턴 정의
패턴
을 만들어 줍니다.
sub 함수 사용
re.sub
함수를 통해 패턴
에 해당되는 부분을 찾고 반환합니다.
결과 반환
결과를 반환합니다.
group 함수