첫 글자의 캐럿은 "아닌 것"을 뜻해
[^abc]는 a, b, c가 아닌 단일 글자를 매칭해. 문자 클래스 첫 자리에 있는 캐럿 ^가 의미를 뒤집어서 "이것들을 제외한 글자 하나"를 뜻하지.
정규식에서 가장 유용한 도구 가운데 하나야. 따옴표를 만날 때까지 읽으려면 [^"]*, 숫자가 아닌 조각을 건너뛰려면 [^0-9]+, 공백이 아닌 조각을 읽으려면 [^\s]+ 또는 7강에서 배울 \S+를 써.
점과 달리 줄바꿈도 매칭해
여기가 함정이야. [^x]는 x가 아닌 모든 글자를 매칭하므로 \n도 포함해. DOTALL이 없으면 점 .는 줄바꿈에서 멈추지만 부정형 문자 클래스는 그대로 지나가. 그래서 [^"]*는 여러 줄을 가로지를 수 있어.
그 동작이 필요할 때도 있고 아닐 때도 있어. 여러 줄짜리 따옴표 문자열을 의도했다면 [^"]*가 맞아. 같은 줄 안의 닫는 따옴표까지만 원한다면 [^"\n]*라고 줄바꿈을 따로 제외해.
캐럿은 첫 위치에서만 특별해
[a^b]는 문자 a, 캐럿, b 중 하나를 매칭해. 캐럿은 대괄호 안의 첫 글자일 때만 부정 연산자야.