본문 바로가기

python

python으로 문자열에 특정 패턴의 문자열 값이 있는지 체크하는 로직

이메일 제목에서 지정한 패턴을 찾기 위해 Python의 re 모듈을 사용할 수 있습니다. 여기서는 "앞에 영문 3자리, 그 다음에는 'Q', 그 다음에는 숫자 7자리" 패턴을 찾는 정규 표현식을 작성하겠습니다.

python으로 문자열에 특정 패턴의 문자열 값이 있는지 체크하는 로직


정규 표현식은 다음과 같이 작성됩니다:


\b : 단어 경계를 의미합니다.
[A-Za-z]{3} : 앞에 영문자 3자리가 옵니다.
Q : 그 다음에는 'Q'가 옵니다.
\d{7} : 그 다음에는 숫자가 7자리 옵니다.
\b : 단어의 끝을 나타냅니다.


이제 이 패턴을 사용하여 지정된 문자열이 이메일 제목에 있는지 확인하는 Python 코드를 작성해 보겠습니다.

import re

def find_pattern_in_subject(subject):
    pattern = r'\b[A-Za-z]{3}Q\d{7}\b'
    match = re.search(pattern, subject)
    return match.group(0) if match else None

 

테스트 코드 입니다.

test_cases = [
    "Forward: Shipment Update - B1234", # 패턴 불일치
    "Notification: Package HBCQ1234567 ready for pickup", # 패턴 일치
    "Alert: Delay in shipment HBCQ12345 - Incorrect", # 패턴 불일치 (숫자가 7자리가 아님)
    "Update: Your order ABCQ7654321 has shipped", # 패턴 일치
    "CONFIRMATION: Booking XYZQ1234567 confirmed", # 패턴 일치
    "Invoice Attached - Invoice Number LMQ123456" # 패턴 불일치 (Q 뒤에 숫자가 6자리)
]

# 테스트 실행
for subject in test_cases:
    result = find_pattern_in_subject(subject)
    print(f"Subject: '{subject}'\nMatch: {result}\n")

 

추후 find_pattern_in_subject를 좀 더 범용적일 수 있도록 변경해야 겠습니다.