injoon2018   3년 전

카카오 기출문제를 풀다가 궁금한 점이 생겼는데요

num0 = re.split('[*+-]', expression)
이것은 에러가 나지 않는데
num = re.split('[+-*]', expression)
이것은 에러가 납니다

수식에서 *, -, +를 기준으로 나누려고 하는건데 중괄호 안에 순서 조심해야하는 것이 있는건가요?

injoon2018   3년 전

자답입니다. [] <- 이 괄호 안에 '-'기호는 '범위'를 뜻합니다. 예를들어 [0-9]하면 0부터 9까지 모든 숫자입니다.

따라서 '-'를 진짜 '-'다라고 알려줘야하는데 그 방법이 

num = re.split(r'[+\-*]', expression)
또는
num = re.split('[+\\-*]', expression)
입니다

bupjae   3년 전

[] 안에 '-' 앞뒤로 글자가 있는 경우, 두 글자 사이에 있는 모든 글자 중 하나를 뜻합니다.

예를들어 [a-z] 는 a, b, c. d, ..., z 까지 26개의 글자 중 하나를 뜻합니다.

이때, character class 의 앞글자와 뒷글자의 순서가 바뀌면 에러가 발생합니다.   

[+-*] 에서 + 는 43, * 는 42 이므로 에러가 발생합니다.

   

반면, [*+-] 는 "~ 사이" 의 의미는 없고 그냥 *, +, - 셋 중 하나를 뜻합니다.

injoon2018   3년 전

@bupjae 귀하신 분이 누추한 곳에.. 감사합니다 정규식도 생각보다 알아야할게 많네요!

댓글을 작성하려면 로그인해야 합니다.