정규식(Regular Expression)을 사용하면 특정 문자로 시작하고 다른 특정 문자로 끝나는 부분 문자열을 손쉽게 추출할 수 있습니다. 이번 글에서는 파이썬의 re 모듈을 활용해 문자열의 시작과 끝을 동시에 일치시키는 방법을 알아보겠습니다.
문제 상황
다음과 같은 문자열이 주어져 있다고 가정해 보겠습니다.
'TestCountry Hello'
여기서 'T'로 시작하고 'y'로 끝나는 단어를 찾아 출력하는 것이 목표입니다.
핵심 요소
이 문제를 해결하기 위해 정규식의 세 가지 핵심 요소를 사용합니다.
- findall() 메서드:
re모듈의 함수로, 패턴과 일치하는 모든 문자열을 리스트 형태로 반환합니다. - 단어 경계 앵커 \b: 단어의 시작 또는 끝 위치를 나타내며, 부분 일치가 아닌 완전한 단어 단위 매칭을 보장합니다.
- 비공백 문자 \S: 공백이 아닌 임의의 문자 하나와 일치합니다.
+\S+처럼 사용하면 하나 이상의 비공백 문자를 의미합니다.
예제 코드
패턴 \bT\S+y\b를 사용하면 'T'로 시작하고 'y'로 끝나는 완전한 단어를 찾을 수 있습니다.
import re result = re.findall(r"\bT\S+y\b", 'TestCountry Hello') print(result)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
['TestCountry']
패턴 분석
\b: 단어의 시작 경계를 지정하여 'T' 바로 앞에 다른 문자가 없도록 합니다.T: 시작 문자가 반드시 'T'여야 함을 의미합니다.\S+: 'T'와 'y' 사이에 공백이 아닌 문자가 하나 이상 존재해야 함을 의미합니다.y: 끝 문자가 'y'여야 함을 의미합니다.\b: 단어의 끝 경계를 지정하여 'y' 뒤에 다른 문자가 붙지 않도록 합니다.
그 결과 'Hello'는 조건에 맞지 않아 제외되고, 'TestCountry'만 정확히 매칭되어 리스트로 반환됩니다. 이처럼 단어 경계 앵커와 문자 클래스를 조합하면 시작과 끝 조건을 갖춘 정교한 문자열 검색이 가능합니다.