안녕하세요! 오늘은 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 모듈을 사용해 문자열에 특정 패턴이 있는지 확인하는 방법을 소개했습니다. 패턴을 사용하면 복잡한 문자열도 손쉽게 검출할 수 있으니, 문자열 작업이 필요할 때 정규식을 활용해 보시길 추천드립니다. 도움이 되셨길 바라며, 오늘도 읽어주셔서 감사합니다!