^는 위치에 따라 뜻이 달라
캐럿은 놓인 자리에 따라 완전히 다른 일을 해. 한 번쯤은 여기서 넘어져.
- 문자 클래스 밖.
^는 문자열 시작 앵커야. - 문자 클래스 안의 첫 글자.
^는 클래스를 부정해. - 문자 클래스 안의 나머지 자리.
^는 리터럴 캐럿이야.
^[abc]는 문자열 시작에서 a, b, c 중 하나를 찾아.
[^abc]는 세 글자가 아닌 글자 하나를 어디에서든 찾아.
[a^b]는 a, 리터럴 캐럿, b 중 하나를 찾아.
어떤 버그를 만들까
가장 흔한 실수는 [^abc]를 의도하고 ^[abc]를 쓰는 거야. 하나는 세 글자를 제외하고, 다른 하나는 문자열 시작에서 세 글자 중 하나를 찾으니 결과가 정반대지.
패턴이 잘못 동작하고 ^가 보인다면 대괄호 안인지 밖인지, 안이라면 첫 자리인지 물어봐.
$는 덜 헷갈려
$는 클래스 밖에서 줄 또는 문자열 끝만 뜻해. 문자 클래스 안에서는 특수하지 않으므로 [a$b]는 a, 달러 기호, b 중 하나를 매칭해.