Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 정규식 기본 예제: re.match()와 re.search() 차이점 쉽게 이해하기

파이썬(Python)에서 정규식(Regular Expression)을 다룰 때 가장 먼저 접하게 되는 두 가지 기본 함수가 바로 re.match()re.search()입니다. 이 글에서는 실제 코드 예제를 통해 두 메서드의 동작 방식과 차이점을 자세히 살펴보겠습니다.

1. re.match() – 문자열 시작 부분에서 일치 확인

re.match() 메서드는 패턴이 문자열의 맨 앞부분과 일치할 때에만 매칭 결과를 반환합니다.

예를 들어, 'TP Tutorials Point TP'라는 문자열에서 'TP'라는 패턴을 찾으면 문자열이 'TP'로 시작하므로 매칭에 성공합니다. 하지만 'Tutorials'만 찾는다면 해당 단어가 문자열 중간에 있기 때문에 매칭되지 않고 None이 반환됩니다.

예제 코드

import re
result = re.match(r'TP', 'TP Tutorials Point TP')
print(result)

실행 결과

<re.Match object; span=(0, 2), match='TP'>

매칭에 성공하면 위와 같이 Match 객체가 반환됩니다. 반면 패턴이 문자열 시작 부분과 일치하지 않으면 아무런 객체 없이 None이 출력됩니다.

2. re.search() – 문자열 전체에서 패턴 검색

re.search() 메서드는 re.match()와 비슷하지만, 검색 범위가 문자열의 시작 부분에 국한되지 않는다는 점이 다릅니다. 즉, 문자열 전체를 훑으며 패턴이 처음 나타나는 위치를 찾아냅니다.

따라서 앞선 예제와 달리 'TP Tutorials Point TP' 문자열에서 'Tutorials' 패턴을 검색하면 정상적으로 매칭 결과를 얻을 수 있습니다.

예제 코드

import re
result = re.search(r'Tutorials', 'TP Tutorials Point TP')
print(result.group())

실행 결과

Tutorials

정리: re.match() vs re.search()

두 메서드의 핵심 차이를 요약하면 다음과 같습니다.

  • re.match(): 문자열의 시작 부분에서만 패턴 일치 여부를 확인합니다.
  • re.search(): 문자열의 어느 위치에서든 패턴을 찾을 수 있습니다. 단, 여러 개가 일치하더라도 첫 번째로 발견된 결과만 반환합니다.

패턴이 문자열 어디에 있는지 확실하지 않다면 re.search()를 사용하는 것이 안전하며, 문자열이 특정 패턴으로 시작하는지 검증할 때는 re.match()가 적합합니다.