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

파이썬 re.search() 함수 완벽 정리 – 정규표현식으로 문자열 검색하기

파이썬의 re.search() 함수는 정규표현식(RE) 패턴을 문자열에서 검색하여, 첫 번째로 일치하는 위치를 찾아주는 기능입니다. 선택적으로 플래그(flags)를 지정하여 검색 조건을 세부적으로 조절할 수도 있습니다.

기본 문법

re.search() 함수의 문법은 다음과 같습니다.

re.search(pattern, string, flags=0)

매개변수 설명

번호매개변수 및 설명
1pattern
문자열에서 찾고자 하는 정규표현식 패턴입니다.
2string
패턴과 일치하는 내용이 있는지 검색할 대상 문자열입니다.
3flags
비트 OR 연산자(|)를 사용해 여러 개의 플래그를 동시에 지정할 수 있습니다. 주요 플래그는 아래 표를 참고하세요.

반환값과 match 객체 활용

re.search()는 패턴이 일치하면 match 객체를 반환하고, 일치하는 결과가 없으면 None을 반환합니다. 매칭된 실제 표현식을 얻으려면 match 객체의 group(num) 또는 groups() 메서드를 사용합니다.

번호match 객체 메서드 및 설명
1group(num=0)
전체 매칭 결과를 반환하며, num 값을 지정하면 해당 번호의 하위 그룹만 반환합니다.
2groups()
매칭된 모든 하위 그룹을 튜플 형태로 반환합니다. 하위 그룹이 없으면 빈 튜플을 반환합니다.

사용 예제

다음은 re.search()를 사용해 문자열에서 패턴을 찾아내는 예제입니다.

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"
searchObj = re.search(r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
    print("searchObj.group() : ", searchObj.group())
    print("searchObj.group(1) : ", searchObj.group(1))
    print("searchObj.group(2) : ", searchObj.group(2))
else:
    print("Nothing found!!")

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

searchObj.group() : Cats are smarter than dogs
searchObj.group(1) : Cats
searchObj.group(2) : smarter

결과 해석

  • group(): 패턴과 일치한 전체 문자열인 'Cats are smarter than dogs'가 출력됩니다.
  • group(1): 첫 번째 괄호 그룹 (.*)에 해당하는 'Cats'가 출력됩니다.
  • group(2): 두 번째 괄호 그룹 (.*?)에 해당하는 'smarter'가 출력됩니다.

이처럼 re.search()는 문자열 전체에서 패턴의 첫 번째 등장 위치를 찾는다는 점에서, 문자열 시작 부분만 확인하는 re.match()와 차이가 있습니다. 로그 분석, 데이터 추출, 입력값 검증 등 다양한 상황에서 유용하게 활용할 수 있습니다.