모든 거 결합한 진짜 패턴 셋
이제 quantifier, character class, anchor, 그룹 다 가짐. 실전 코드에서 어떻게 결합되는지.
HTML/XML 태그 (loose)
<div>, <p class="foo"> 같은 단순 태그 추출: <[^>]+>. Negated class 가 greedy .* 함정 회피. (진짜 HTML 파싱은 여전히 파서 필요 — 이건 ad-hoc 추출용.)
따옴표 문자열
이중 따옴표 사이 어떤 거든 매칭: "[^"]*". Negated class 가 ReDoS-safe 만들고 첫 닫는 따옴표에서 멈춤. 안에 escape 된 따옴표 (\") 처리하려면 패턴 자라남: "(?:[^"\\]|\\.)*" — "비-따옴표-비-백슬래시 또는 escape 된 어떤 거."
숫자 (정수 또는 소수, 부호 있음/없음)
-?\d+(\.\d+)? 매칭: optional 마이너스, 한 개 이상 숫자, optional 소수 부분. 소수 부분이 ? 있는 그룹에 wrap, 그래야 전체 .\d+ 시퀀스가 optional, 숫자만이 아니라.
Quantifier 체크리스트
Quantifier 있는 진짜 패턴 작성할 때 묻기:
- 각 조각이
+(필수) 인가*(optional) 인가? - 내
.*사용이 정당화되는가, 아니면[^X]*여야 하는가? - 내
{n,m}경계가 타이트한가 (안에 공백 없음)? - 적절한 자리에 anchor 했나 (
\b또는^...$)? - 빈 입력과 매우 긴 입력 테스트 했나?
다섯 질문. Quantifier 버그 90% 잡음.