re.match() 함수는 파이썬 re 모듈에서 제공하는 함수로, 정규 표현식(RE) 패턴이 문자열의 시작 부분과 일치하는지 검사합니다. 필요에 따라 플래그(flags)를 함께 지정하여 매칭 동작을 세부적으로 조정할 수 있습니다.
참고로 re.match()는 문자열의 시작에서만 패턴을 찾는 반면, re.search()는 문자열 전체를 대상으로 패턴을 검색한다는 차이가 있습니다.
문법(Syntax)
이 함수의 기본 문법은 다음과 같습니다.
re.match(pattern, string, flags=0)
매개변수 설명
| 번호 | 매개변수 및 설명 |
|---|---|
| 1 | pattern 매칭을 시도할 정규 표현식 패턴입니다. |
| 2 | string 패턴과 비교할 대상 문자열입니다. 이 문자열의 시작 부분에서 매칭이 시도됩니다. |
| 3 | flags 비트 OR( |) 연산자를 사용해 여러 플래그를 조합하여 지정할 수 있습니다. 주요 플래그로는 대소문자 무시(re.I), 멀티라인 모드(re.M) 등이 있습니다. |
반환값
매칭에 성공하면 match 객체를 반환하고, 실패하면 None을 반환합니다. 매칭된 표현식을 얻으려면 match 객체의 group(num) 또는 groups() 메서드를 사용합니다.
| 번호 | Match 객체 메서드 및 설명 |
|---|---|
| 1 | group(num=0) 전체 매칭 결과를 반환하거나, num 값을 지정하면 해당 번호의 특정 서브그룹을 반환합니다. |
| 2 | groups() 매칭된 모든 서브그룹을 튜플 형태로 반환합니다. 서브그룹이 없으면 빈 튜플을 반환합니다. |
예제
다음은 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")을 반환하는 것을 확인할 수 있습니다.