한 패턴 기호, 거의 모든 글자
. 는 줄바꿈을 제외한 어떤 글자 한 개 매칭. 그 "줄바꿈 제외" 가 모두가 까먹고 모두가 production 에서 물리는 부분.
패턴 c.t 는 cat, cot, cut, c@t, c1t, c t, c.t (그래, 리터럴 점도 — . 가 점 포함 모든 글자 매칭하니까).
패턴 . 자체는 *모든* 글자를 한 글자씩 매칭, 줄바꿈만 제외. Python 에서 re.findall(r'.', 'abc') 돌리면 ['a', 'b', 'c'].
DOTALL / 's' 플래그
. 가 줄바꿈도 매칭하길 원하면 DOTALL 플래그 필요. Python: re.DOTALL 또는 re.S. PCRE / JavaScript / 다른 다수: s 플래그 또는 inline (?s). 없으면 패턴이 멀티라인 입력의 \n 마다 멈춰 — "내 정규식이 한 줄에선 되는데 두 줄에선 안 됨" 의 고전적 원인.
점은 greedy 한 친구
quantifier (트랙 3) 와 결합하면 .* 는 "어떤 글자, 0번 이상." 정규식 전체에서 가장 강력하고 가장 위험한 조합. .* 는 backtrack 전에 파일 전체를 기쁘게 먹어. 거의 항상 lazy quantifier (.*?) 또는 character class ([^"]*) 를 대신 써. Quantifier 트랙에서 여러 강 할애.