카카오 기출문제를 풀다가 궁금한 점이 생겼는데요
num0 = re.split('[*+-]', expression) 이것은 에러가 나지 않는데
num = re.split('[+-*]', expression) 이것은 에러가 납니다 수식에서 *, -, +를 기준으로 나누려고 하는건데 중괄호 안에 순서 조심해야하는 것이 있는건가요?
자답입니다. [] <- 이 괄호 안에 '-'기호는 '범위'를 뜻합니다. 예를들어 [0-9]하면 0부터 9까지 모든 숫자입니다.
따라서 '-'를 진짜 '-'다라고 알려줘야하는데 그 방법이
num = re.split(r'[+\-*]', expression) 또는 num = re.split('[+\\-*]', expression) 입니다
[] 안에 '-' 앞뒤로 글자가 있는 경우, 두 글자 사이에 있는 모든 글자 중 하나를 뜻합니다.
예를들어 [a-z] 는 a, b, c. d, ..., z 까지 26개의 글자 중 하나를 뜻합니다.
이때, character class 의 앞글자와 뒷글자의 순서가 바뀌면 에러가 발생합니다.
[+-*] 에서 + 는 43, * 는 42 이므로 에러가 발생합니다.
반면, [*+-] 는 "~ 사이" 의 의미는 없고 그냥 *, +, - 셋 중 하나를 뜻합니다.
@bupjae 귀하신 분이 누추한 곳에.. 감사합니다 정규식도 생각보다 알아야할게 많네요!
댓글을 작성하려면 로그인해야 합니다.
injoon2018 3년 전
카카오 기출문제를 풀다가 궁금한 점이 생겼는데요