대괄호: 이 리스트에서 하나 골라
[abc] 는 정확히 한 글자 매칭, a / b / c 중 하나. 부분 문자열 abc 전체 아냐 — 셋 중 하나인 글자 한 개.
이게 정규식의 일꾼. "모음": [aeiou]. "숫자 또는 문자": [a-zA-Z0-9]. "구분자": [ ,;\t]. character class 로 사고하기 시작하면 패턴 절반이 자연스럽게 나와.
클래스 안에선 특수 글자 대부분이 특수 아님
가장 유용한 정규식 사실 중 하나: 대부분 메타문자가 [...] 안에서 특수 의미 잃음. 클래스 안의 점 . 는 리터럴. +, ?, (, ), {, } 도 마찬가지. 클래스 안에선 escape 거의 필요 없어.
예외 — 클래스 안에서도 여전히 특수한 글자들:
]— 클래스 닫음. escape (\]) 또는 첫 위치 ([]abc]).\— 여전히 escape 글자.^— 첫 글자면 특수 (negation, 다음 강). 다른 위치는 리터럴.-— 두 글자 사이는 특수 (range). 첫/끝 위치 또는 escape 면 리터럴.
순서 무관, 중복 무해
[cba] 와 [abc] 동일. [aabbcc] 와 [abc] 동일. 클래스는 집합 — 엔진이 내부적으로 중복 제거.