대괄호 안에서 한 글자를 골라
[abc]는 a, b, c 가운데 한 글자만 매칭해. abc라는 세 글자짜리 문자열을 찾는 문법이 아니라는 점이 핵심이야.
모음 하나는 [aeiou], 영문자나 숫자 하나는 [a-zA-Z0-9], 공백이나 쉼표 같은 구분자 하나는 [ ,;\t]로 나타낼 수 있어. 입력의 한 자리에 올 수 있는 후보를 먼저 생각하면 문자 클래스를 자연스럽게 만들 수 있지.
문자 클래스 안에서는 규칙이 달라져
바깥에서 특별한 뜻을 갖는 기호도 [...] 안에서는 대부분 문자 그대로 취급돼. 예를 들어 ., +, ?, 괄호와 중괄호는 보통 따로 이스케이프할 필요가 없어.
그래도 다음 네 기호는 위치와 엔진 방언을 살펴야 해.
]는 클래스를 닫아. JavaScript·Python·PCRE에서는 보통\]로 쓰고, POSIX BRE/ERE에서는 첫 위치에 두는 방식도 사용해.\는 클래스 안에서도 이스케이프 문자야.^가 첫 위치에 오면 클래스를 부정하고, 다른 위치에서는 보통 문자 그대로야.-가 두 문자 사이에 오면 범위를 뜻해. 첫 위치나 끝에 두거나 이스케이프하면 하이픈 자체를 찾을 수 있어.
순서와 중복은 결과를 바꾸지 않아
[cba]와 [abc]는 같은 세 글자를 허용하고, [aabbcc]도 결과는 같아. 문자 클래스는 순서 있는 문자열이 아니라 허용할 문자들의 집합으로 읽어 봐.