92 정규식 쿼리 도구 (Regex Query Tool)
정규 표현식(Regular Expressions)을 사용하여 텍스트에서 특정 패턴을 검색하고 분석할 수 있는 도구를 만들어 봅시다. 웹사이트나 문서에서 이메일, 전화번호, 또는 복잡한 텍스트 패턴을 한눈에 찾을 수 있게 도와줍니다.
이 프로젝트는 정규식 패턴을 익히고, 이를 실시간으로 테스트하고 결과를 시각화하는 방법을 배우기에 아주 좋습니다. 특히 최근 텍스트 데이터의 전처리와 분석에 필수적인 정규식 도구를 직접 설계해 보세요.
92.1 주요 개발 포인트
- 정규식 패턴 입력 및 테스트: 사용자가 입력한 패턴을 실시간으로 반영하여 매칭되는 부분을 강조합니다.
- 텍스트 검색 및 추출: 대량의 텍스트 데이터에서 원하는 정보를 한꺼번에 추출하여 목록으로 보여줍니다.
- 매칭 결과 시각화 (Highlighter): 문서 내에서 정규식과 일치하는 텍스트에 배경색을 칠해 눈에 띄게 표시합니다.
- 그룹 캡처 지원 (Group Capturing): 복잡한 정규식에서 각 그룹별로 추출된 값을 표 형태로 깔끔하게 정리합니다.
- 사용자 인터페이스 (GUI): 패턴 입력창, 원본 텍스트 창, 그리고 검색 결과창을 포함한 직관적인 UI를 구축합니다.
92.2 Python 구현 예시 (간단한 정규식 검색 로직)
import re
class RegexTool:
"""
정규 표현식을 사용하여 텍스트에서 패턴을 검색하고 추출합니다.
"""
def __init__(self):
print("정규식 쿼리 엔진 시작.")
def search_pattern(self, pattern, text):
"""
주어진 패턴으로 텍스트를 검색하여 모든 매칭 결과를 반환합니다.
"""
print(f"패턴 '{pattern}'으로 검색 중...")
try:
matches = re.finditer(pattern, text)
results = []
for m in matches:
results.append({
"start": m.start(),
"end": m.end(),
"text": m.group()
})
print(f"총 {len(results)}개의 매칭 결과를 찾았습니다.")
return results
except re.error as e:
print(f"잘못된 정규식 패턴입니다: {e}")
return None
if __name__ == "__main__":
tool = RegexTool()
# 이메일 추출 정규식 테스트
email_regex = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
sample_text = "제 이메일은 user@example.com 이고, 다른 이메일은 contact@google.co.kr 입니다."
matches = tool.search_pattern(email_regex, sample_text)
if matches:
print("\n--- 검색 결과 ---")
for m in matches:
print(f"위치 ({m['start']}-{m['end']}): {m['text']}")