본문 바로가기

언어/Python

[ Python ] 정규식에서 패턴 매칭 후 인덱스로 결과에 접근하기

반응형

re.match() 함수는 패턴이 문자열의 시작 부분과 일치하는지 확인할 때 사용됩니다. 이 함수는 re.Match 객체를 반환하며, 이 객체를 통해 매치된 부분과 캡처된 그룹에 접근할 수 있습니다. 이 때, 캡처된 그룹에 접근하려면 group() 메서드를 사용하며, 이 메서드의 인덱스를 통해 특정 그룹의 값을 숫자로 접근할 수 있습니다.

re.match()의 사용 방법

import re

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

# 문자열
text = "123-45-6789"

# 패턴 매칭
match = re.match(pattern, text)

if match:
    # 매칭된 전체 문자열
    print(match.group(0))  # '123-45-6789'

    # 각 그룹에 접근 (숫자로)
    print(match.group(1))  # '123'
    print(match.group(2))  # '45'
    print(match.group(3))  # '6789'
else:
    print("매치되지 않음")

예제 설명

위 코드에서 pattern 변수는 세 부분으로 나누어진 숫자를 매칭하는 정규 표현식입니다. (\d{3}), (\d{2}), (\d{4})는 각각 3자리, 2자리, 4자리 숫자를 나타내며, 이 부분을 소괄호로 묶어서 캡처 그룹을 형성합니다.

  • match.group(0)은 매칭된 전체 문자열을 반환합니다.
  • match.group(1), match.group(2), match.group(3)은 각각 첫 번째, 두 번째, 세 번째 캡처 그룹에 해당하는 부분을 반환합니다.

응용 예제

다음은 조금 더 복잡한 예제입니다. 이름과 나이를 매칭하는 예제입니다.

import re

# 패턴 정의
pattern = r"Name: (\w+), Age: (\d+)"

# 문자열
text = "Name: Alice, Age: 30"

# 패턴 매칭
match = re.match(pattern, text)

if match:
    # 매칭된 이름과 나이 추출
    name = match.group(1)
    age = int(match.group(2))  # 나이를 숫자로 변환

    print(f"Name: {name}, Age: {age}")
else:
    print("매치되지 않음")

응용 예제 설명

이 예제에서는 이름과 나이를 매칭하는 패턴을 사용했습니다. (\w+)는 이름과 일치하는 단어를 캡처하고, (\d+)는 나이를 나타내는 숫자를 캡처합니다. 그런 다음 match.group(1)match.group(2)를 사용하여 각각 이름과 나이를 추출하며, age의 경우 숫자 형식으로 변환합니다.

이처럼 re.match()를 사용하면 매칭된 문자열과 캡처 그룹에 쉽게 접근할 수 있으며, 이들을 다양한 방식으로 활용할 수 있습니다.

반응형