프로그래머스 신규아이디 추천 문제를 정규식으로 문제를 푸신 분들의 풀이를 뜯어보면서
정규식 sub함수에 대해 익혀볼 생각이다.
정규 표현식 - 검색 패턴을 지정
치환 문자 - 변경하고 싶은 문자
대상 문자열 - 검색 대상이 되는 문자열
st = re.sub('[^a-z0-9\-_.]', '', st) # st에서 a~z, 0~9, -_.가 아닌 문자를 ''로 치환
# [^a-z0-9\-_.] -> ^ = 포함하지 않는, \ = 특수문자를 문자로 사용
st = re.sub('\.+', '.', st) # st에서 '.'이 한개 이상있으면 '.'으로 치환
# + = 앞의 문자가 1개 이상
st = re.sub('^[.]|[.]$', '', st) # st에서 '.'이 앞에 있거나 뒤에 있으면 ''으로 치환
# ^[] = []안의 문자가 맨 앞 , []$ = []안의 문자가 맨뒤
st = 'a' if len(st) == 0 else st[:15] # 만약 st의 길이가 0이면 'a', 아니면 st[0:15]
# 문자열도 리스트처럼 컴프리헨션이 되나?
st = re.sub('^[.]|[.]$', '', st) # st에서 '.'이 앞에 있거나 뒤에 있으면 ''으로 치환
# ^[] = []안의 문자가 맨 앞 , []$ = []안의 문자가 맨뒤
st = st if len(st) > 2 else st + "".join([st[-1] for i in range(3-len(st))])
# 만약 st의 길이가 2보다 크다면 st, 아니면 st에 st의 마지막을 3-st의 길이 만큼 더해라
2021.05.06 - [분류 전체보기] - [coding_test] 신규아이디 추천
[ Python] 겹치지 않는 정렬하기 쉬운 combination (0) | 2021.05.06 |
---|---|
[Python] 갯수 세기 Counter (0) | 2021.05.06 |
[Python] 음수를 양수로 바꾸는 abs (0) | 2021.05.06 |
[Error]cannot assign to function call 과 cannot assign to operator 변수 선언 (0) | 2021.05.06 |
[Error]Unable to read camera feed 맥 카메라 권한 (0) | 2021.05.03 |