본문 바로가기

언어/Python

[ Python ] re.match() 사용하기 (전화번호)

반응형

파이썬의 re 모듈에서 re.Match 객체는 정규 표현식 검색 결과를 나타내며, 일치하는 부분 문자열에 대한 자세한 정보를 제공합니다. 이 객체는 re.search(), re.match(), re.fullmatch() 등의 함수가 일치 결과를 반환할 때 생성됩니다. re.Match 객체는 일치하는 텍스트, 시작 및 끝 위치, 캡처 그룹 등을 포함한 다양한 정보를 제공합니다.

1. re.Match 객체의 주요 메서드와 속성

  1. group():
    • 일치하는 전체 문자열 또는 특정 그룹을 반환합니다.
    • group(0)은 전체 일치 문자열을 반환하고, group(n)은 n번째 그룹을 반환합니다.
  2. start():
    • 일치가 시작되는 문자열 내 위치를 반환합니다.
  3. end():
    • 일치가 끝나는 문자열 내 위치를 반환합니다.
  4. span():
    • 일치하는 부분 문자열의 시작 및 끝 위치를 튜플로 반환합니다.
  5. groups():
    • 모든 캡처 그룹을 튜플로 반환합니다.
  6. groupdict():
    • 이름이 있는 캡처 그룹을 딕셔너리로 반환합니다.

2. 예제

import re

# 예제 문자열
string = "My phone number is 123-456-7890."

# 정규 표현식 패턴
pattern = r"(\d{3})-(\d{3})-(\d{4})"

# re.search()를 사용하여 일치하는 부분 찾기
match = re.search(pattern, string)

# Match 객체가 반환되었는지 확인
if match:
    print("Match found!")

    # group() 메서드
    print("Full match:", match.group())  # 전체 일치
    print("Group 1:", match.group(1))    # 첫 번째 그룹
    print("Group 2:", match.group(2))    # 두 번째 그룹
    print("Group 3:", match.group(3))    # 세 번째 그룹

    # start()와 end() 메서드
    print("Start position:", match.start())
    print("End position:", match.end())

    # span() 메서드
    print("Span:", match.span())

    # groups() 메서드
    print("Groups:", match.groups())
else:
    print("No match found.")

예제 출력

Match found!
Full match: 123-456-7890
Group 1: 123
Group 2: 456
Group 3: 7890
Start position: 19
End position: 31
Span: (19, 31)
Groups: ('123', '456', '7890')

이 예제에서:

  • pattern = r"(\d{3})-(\d{3})-(\d{4})"는 전화번호 형식을 찾는 정규 표현식입니다.
  • re.search() 함수는 문자열에서 이 패턴과 일치하는 부분을 찾고, 일치하는 부분이 있으면 re.Match 객체를 반환합니다.
  • match.group() 메서드는 전체 일치 문자열과 각 캡처 그룹을 반환합니다.
  • match.start()match.end() 메서드는 일치하는 부분의 시작 및 끝 위치를 반환합니다.
  • match.span() 메서드는 시작 및 끝 위치를 튜플로 반환합니다.
  • match.groups() 메서드는 모든 캡처 그룹을 튜플로 반환합니다.

re.Match 객체는 일치 결과에 대한 상세한 정보를 제공하여 정규 표현식을 사용한 문자열 처리에 매우 유용합니다.

반응형