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

파이썬 re.match() 함수 완벽 가이드 – 정규표현식 매칭 기초부터 예제까지

re.match() 함수는 파이썬 re 모듈에서 제공하는 함수로, 정규 표현식(RE) 패턴이 문자열의 시작 부분과 일치하는지 검사합니다. 필요에 따라 플래그(flags)를 함께 지정하여 매칭 동작을 세부적으로 조정할 수 있습니다.

참고로 re.match()는 문자열의 시작에서만 패턴을 찾는 반면, re.search()는 문자열 전체를 대상으로 패턴을 검색한다는 차이가 있습니다.

문법(Syntax)

이 함수의 기본 문법은 다음과 같습니다.

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

매개변수 설명

번호매개변수 및 설명
1pattern
매칭을 시도할 정규 표현식 패턴입니다.
2string
패턴과 비교할 대상 문자열입니다. 이 문자열의 시작 부분에서 매칭이 시도됩니다.
3flags
비트 OR(|) 연산자를 사용해 여러 플래그를 조합하여 지정할 수 있습니다. 주요 플래그로는 대소문자 무시(re.I), 멀티라인 모드(re.M) 등이 있습니다.

반환값

매칭에 성공하면 match 객체를 반환하고, 실패하면 None을 반환합니다. 매칭된 표현식을 얻으려면 match 객체의 group(num) 또는 groups() 메서드를 사용합니다.

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

예제

다음은 re.match() 함수의 사용 예제입니다.

#!/usr/bin/python3
import re

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

if matchObj:
   print("matchObj.group() : ", matchObj.group())
   print("matchObj.group(1) : ", matchObj.group(1))
   print("matchObj.group(2) : ", matchObj.group(2))
else:
   print("No match!!")

위 예제에서 사용된 정규 표현식 (.*) are (.*?) .*은 문자열에서 "are" 앞부분과 뒷부분을 각각 그룹으로 캡처합니다. 또한 re.I 플래그로 대소문자를 구분하지 않도록, re.M 플래그로 멀티라인 모드를 활성화했습니다.

실행 결과

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

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

group()은 전체 매칭 결과를, group(1)은 첫 번째 그룹("Cats"), group(2)는 두 번째 그룹("smarter")을 반환하는 것을 확인할 수 있습니다.