그룹 + alternation + 치환 다 합치기
이제 production 급 텍스트 변환에 모든 거 가짐. 실전 작업 셋에 결합.
작업 1: 로그 타임스탬프 정규화
다른 출처 로그가 다른 타임스탬프 포맷: 2026-05-04T14:32:11Z, 04/May/2026 14:32:11, 14:32:11 04 May 2026. 한 canonical 포맷 골라서 다 변환.
전략: named 그룹으로 각 입력 포맷 매칭 패턴 셋 작성, 그 다음 backreference 로 canonical 포맷에 sub.
작업 2: 어색한 따옴표 있는 CSV
실제 CSV 는 지저분: Pippa,"3, going on 30",warm. 중간 필드의 따옴표 안에 콤마. Quoted 와 bare 둘 다 처리하는 패턴: (?:"([^"]*)"|([^,]*))(?:,|$). Finditer 로 각 필드 캡처.
작업 3: Markdown 을 HTML 로 변환 (부분)
**bold** 를 <strong>bold</strong> 로 변환:
re.sub(r'\*\*([^*]+)\*\*', r'<strong>\1</strong>', text)
Markdown 구문당 한 줄. 진짜 Markdown 파서가 production 에 존재; ad-hoc 재작성엔 정규식이 더 빠름.
결합 원칙
- Named 그룹으로 입력 모양 묘사.
- Scope 위해 non-capturing 그룹.
- 알려진 변형엔 alternation.
- 재배열엔 치환에 backreference.
- 패턴당 최소 적대적 입력 하나로 테스트.
다섯 단계. 한 줄 변환에서 풀 로그 파이프라인까지 scale.