퍼즐 다섯, 난이도 증가
다섯 다 풀면 이 quest 박힘. 각각 머리에서 먼저 시도; candidate 가진 후에만 바닥의 답 체크.
퍼즐 1: 길이 3-5 회문 매칭
앞뒤로 같게 읽히는 단어: 'mom', 'eye', 'level', 'civic'. Word boundary 사용.
퍼즐 2: 'fizz' 매칭, 'buzz' 앞에 안 옴
텍스트에서 'fizz' 찾되 (optional 공백 있는) 'buzz' 가 바로 앞에 오는 등장 스킵.
퍼즐 3: 정확히 두 모음 가진 문자열 매칭
'cat' (1), 'beat' (2), 'beats' (2), 'beautiful' (5). 'beat' 와 'beats' 만 매칭.
퍼즐 4: ANSI 색 코드 strip
터미널 출력에 종종 \x1b[31m 또는 \x1b[1;32m 같은 코드. 다른 콘텐츠 제거 없이 다 제거.
퍼즐 5: 인접 중복 단어 찾기
'the the cat' 또는 'sat sat' 같은 거 감지. 중복 단어 반환.
스포일러 (시도 후)
1. \b(\w)(\w?)(\w)?\3\2?\1\b — 중심 주변 쌍 캡처, backreference 와 optional 매칭 사용.
2. (?<!buzz\s?)fizz — negative lookbehind. (Variable-width lookbehind 필요; Python regex 모듈 또는 fixed-width pad.)
3. ^[^aeiou]*[aeiou][^aeiou]*[aeiou][^aeiou]*$ — 비-모음, 모음, 비-모음, 모음, 비-모음.
4. \x1b\[[\d;]*m — escape, 대괄호, 숫자와 세미콜론, m.
5. \b(\w+)\s+\1\b — 반복 감지 backreference.
졸업
다섯 다 이해했으면 — 트레이드오프 (퍼즐 2 의 lookbehind variability, 퍼즐 1 의 중심 글자 처리) 포함 — 졸업. 나머지가 연습. regex101 북마크 유지, lookaround 를 기본 아닌 power tool 로 처리, 황금 규칙 기억: 모양 문제 푸는 가장 작은 도구.