WeniVooks

검색

정규표현식 톺아보기 with JavaScript and Python

실무 활용 프로젝트

1. 마크다운 파서 만들기

1.1 프로젝트 개요

마크다운 문서에서 제목, 링크, 강조 구문을 추출하고 HTML로 변환하는 파서를 만듭니다.

1.1.1 요구사항
  1. 헤더(h1~h6) 변환: # 제목<h1>제목</h1>
  2. 링크 변환: [텍스트](URL)<a href="URL">텍스트</a>
  3. 강조 구문 변환:
    • **텍스트**<strong>텍스트</strong>
    • *텍스트*<em>텍스트</em>
1.1.2 테스트용 입력 텍스트
# 메인 제목
## 부제목

이것은 [위니브](https://weniv.co.kr) 튜토리얼입니다.
**중요한** 내용과 *강조할* 내용이 있습니다.

### 세부 내용
추가 설명은 [여기](https://example.com)를 참고하세요.
# 메인 제목
## 부제목

이것은 [위니브](https://weniv.co.kr) 튜토리얼입니다.
**중요한** 내용과 *강조할* 내용이 있습니다.

### 세부 내용
추가 설명은 [여기](https://example.com)를 참고하세요.

2. 로그 파일 분석기

2.1 프로젝트 개요

웹 서버 로그 파일을 분석하여 주요 통계 정보를 추출하는 프로그램을 만듭니다.

2.1.1 요구사항
  1. IP 주소별 접속 횟수 카운트
  2. HTTP 상태 코드별 분포 분석
  3. 시간대별 접속 통계
  4. 가장 많이 접속한 페이지 TOP 5
2.1.2 테스트용 로그 데이터
192.168.1.1 - - [28/Oct/2023:13:17:10 +0900] "GET /index.html HTTP/1.1" 200 2326
10.0.0.2 - - [28/Oct/2023:13:17:15 +0900] "GET /images/logo.png HTTP/1.1" 200 4662
192.168.1.1 - - [28/Oct/2023:13:17:20 +0900] "GET /api/data HTTP/1.1" 404 1032
10.0.0.3 - - [28/Oct/2023:13:18:10 +0900] "POST /login HTTP/1.1" 500 1205
192.168.1.1 - - [28/Oct/2023:13:19:10 +0900] "GET /about.html HTTP/1.1" 200 3044
192.168.1.1 - - [28/Oct/2023:13:17:10 +0900] "GET /index.html HTTP/1.1" 200 2326
10.0.0.2 - - [28/Oct/2023:13:17:15 +0900] "GET /images/logo.png HTTP/1.1" 200 4662
192.168.1.1 - - [28/Oct/2023:13:17:20 +0900] "GET /api/data HTTP/1.1" 404 1032
10.0.0.3 - - [28/Oct/2023:13:18:10 +0900] "POST /login HTTP/1.1" 500 1205
192.168.1.1 - - [28/Oct/2023:13:19:10 +0900] "GET /about.html HTTP/1.1" 200 3044

3. 데이터 정제 및 변환기

3.1 프로젝트 개요

비정형 데이터를 정형 데이터로 변환하는 프로그램을 만듭니다.

3.1.1 요구사항
  1. 다양한 형식의 날짜를 표준 형식으로 변환
    • "2023/10/28", "28-10-2023", "Oct 28, 2023" → "2023-10-28"
  2. 이메일 주소 정규화
    • 대소문자 통일
    • 중복된 점(.) 제거
    • 사용자명+태그 처리
  3. 전화번호 정규화
    • 지역 번호 추출
    • 국제 번호 처리
    • 하이픈 통일
3.1.2 테스트용 데이터
Dates:
2023/10/28
28-10-2023
Oct 28, 2023
2023년 10월 28일

Emails:
TEST.user@EXAMPLE.com
test.test.user@example.com
user+tag@domain.com
user+spam@domain...com

Phone Numbers:
(02)1234-5678
02-123-4567
+82 10-1234-5678
01012345678
Dates:
2023/10/28
28-10-2023
Oct 28, 2023
2023년 10월 28일

Emails:
TEST.user@EXAMPLE.com
test.test.user@example.com
user+tag@domain.com
user+spam@domain...com

Phone Numbers:
(02)1234-5678
02-123-4567
+82 10-1234-5678
01012345678

4. 프로젝트 요구사항

4.1 공통 요구사항
  1. 주석을 포함한 명확한 코드 작성
  2. 예외 처리 구현
  3. 단위 테스트 케이스 작성
  4. 성능 최적화 고려
4.2 평가 기준
  1. 코드의 가독성과 유지보수성
  2. 정규표현식의 효율성
  3. 예외 상황 처리의 완성도
  4. 실행 성능
3장 실전 프로젝트3.2 프로젝트 해답