Study/Python

[Python] 특정 문자열 패턴이 있는지 체크하는 방법

Super-Son 2024. 10. 26. 18:01

안녕하세요! 오늘은 Python에서 문자열에 특정 패턴이 있는지 확인하는 방법을 소개하려고 합니다. 문자열 작업을 하다 보면 특정 패턴의 문자가 포함되어 있는지 확인해야 할 때가 있는데요, 이를 위해 정규식을 활용한 간단한 코드를 작성해 보았습니다. 비슷한 작업을 필요로 하는 분들에게 도움이 되길 바랍니다.

 


 

패턴 체크 코드

제가 필요했던 패턴은 '*[숫자]*' 입니다. 아래 코드는 문자열에 해당 패턴이 있는지 확인하는 코드입니다.

import re

def contains_number_pattern(text):
    # 숫자를 포함한 '*[숫자]*' 패턴을 찾는 정규식
    pattern = r'\*\d+\*'
    # 정규식 검색
    return bool(re.search(pattern, text))

# 테스트
test_string1 = "Hello *123* World"
test_string2 = "Hello World"

print(contains_number_pattern(test_string1))  # True 출력
print(contains_number_pattern(test_string2))  # False 출력

 

코드 설명

  • pattern = r'\*\d+\*' : *[숫자]* 형태의 문자열을 찾기 위한 정규식 패턴입니다. \d+는 하나 이상의 숫자를 의미하며, 이 숫자는 별표로 감싸져 있습니다.
  • r'\*\d+\*'로 작성한 이유는 정규표현식에서 사용되는 특수 문자를 그대로 인식하게 하기 위함입니다. Python에서 문자열 앞에 r을 붙이면 **"raw string"**으로 인식되어 백슬래시(\)를 이스케이프 문자로 해석하지 않고, 있는 그대로 처리합니다.
  • re.search(pattern, text) : text에서 해당 패턴을 검색하여 패턴이 존재하면 True, 없으면 False를 반환합니다.

 

정규표현식 활용하기

정규표현식(Regular Expressions)은 문자열 내 특정 패턴을 찾기 위한 일종의 언어로, 다양한 패턴을 지정할 수 있습니다. 정규표현식에 대한 설명을 하기 위한 글이 아니니 자주 사용하는 기호들만 간단히 소개하겠습니다.

정규표현식 설명 예시 예시 설명
\d 숫자 (0-9) \d+  숫자가 하나 이상
\D 숫자가 아닌 문자 \D+  숫자가 아닌 문자들
\w 문자와 숫자 (알파벳, 숫자, _) \w+  단어 또는 식별자
\W 문자와 숫자가 아닌 문자 \W+  특수 문자들
\s 공백 문자 (스페이스, 탭, 줄바꿈) \s+  공백이 하나 이상
\S 공백이 아닌 문자 \S+  공백 외의 문자들
^ 문자열의 시작 ^abc  "abc"로 시작하는 문자열
$ 문자열의 끝 xyz$  "xyz"로 끝나는 문자열
* 0회 이상 반복 a*  a가 0회 이상
+ 1회 이상 반복 a+  a가 1회 이상
{n,m} n회 이상, m회 이하 반복 a{2,4}  aa, aaa, aaaa

 


 

이번 포스팅에서는 Python의 re 모듈을 사용해 문자열에 특정 패턴이 있는지 확인하는 방법을 소개했습니다. 패턴을 사용하면 복잡한 문자열도 손쉽게 검출할 수 있으니, 문자열 작업이 필요할 때 정규식을 활용해 보시길 추천드립니다. 도움이 되셨길 바라며, 오늘도 읽어주셔서 감사합니다!