파이썬에서 search()는 표준 라이브러리인 re(정규표현식) 모듈이 제공하는 메서드입니다. 문자열 전체를 대상으로 지정한 패턴과 일치하는 부분을 찾아주는 역할을 합니다.
search() 함수의 기본 문법
re.search(pattern, string)
re.match()와 비슷해 보이지만 중요한 차이점이 있습니다. re.match()는 문자열의 시작 부분에서만 패턴을 찾는 반면, re.search()는 문자열 어느 위치에서든 패턴을 찾을 수 있습니다.
예를 들어, 문자열 'TP Tutorials Point TP'에서 'Tutorials'라는 패턴을 찾는 경우를 살펴보겠습니다.
re.match(): 문자열 시작이 'TP'이므로 매치에 실패합니다.re.search(): 문자열 중간에 있는 'Tutorials'를 성공적으로 찾아냅니다.
사용 예제
import re result = re.search(r'Tutorials', 'TP Tutorials Point TP') print(result.group(0))
실행 결과
Tutorials
search() 함수의 주요 특징
위 예제에서 확인할 수 있듯이, search() 메서드는 문자열의 어떤 위치에서도 패턴을 찾을 수 있습니다. 다만 한 가지 유의할 점은, 패턴이 여러 번 나타나더라도 첫 번째로 발견된 일치 항목만 반환한다는 것입니다.
또한 search()는 매치가 발견되면 매치 객체(Match Object)를 반환하며, 이 객체를 통해 다음과 같은 정보를 얻을 수 있습니다.
group(): 매치된 문자열을 반환합니다.start(): 매치가 시작되는 위치 인덱스를 반환합니다.end(): 매치가 끝나는 위치 인덱스를 반환합니다.span(): 매치 구간을 (시작, 끝) 튜플 형태로 반환합니다.
패턴을 찾지 못한 경우에는 None을 반환하므로, 실제 코드에서는 반환값이 None인지 반드시 확인한 후 사용하는 것이 안전합니다.