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

파이썬 정규식으로 각 매칭 항목의 정확한 위치 찾는 방법

파이썬 정규식에서 주어진 문자열 내 각 매칭(match) 항목의 정확한 위치를 찾으려면 re.finditer() 메서드를 사용하면 됩니다.

finditer()는 문자열에서 정규식 패턴과 일치하는 모든 부분을 매치 객체(Match Object) 형태로 순서대로 반환하는 이터레이터입니다. 각 매치 객체는 다음과 같은 유용한 정보를 제공합니다.

  • m.start() — 매칭이 시작되는 위치(인덱스)
  • m.end() — 매칭이 끝나는 위치(인덱스)
  • m.span() — 시작 위치와 끝 위치를 튜플로 반환
  • m.group() — 실제 매칭된 문자열

예제 코드

아래 예제는 문자열 'A5B6C7D8'에서 대문자와 숫자에 해당하는 패턴 [A-Z0-9]를 찾아, 각 매칭의 시작 위치와 매칭된 문자를 함께 출력합니다.

import re

p = re.compile("[A-Z0-9]")
for m in p.finditer('A5B6C7D8'):
    print(m.start(), m.group())

실행 결과

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

0 A
1 5
2 B
3 6
4 C
5 7
6 D
7 8

추가 활용: span()으로 범위 확인하기

매칭의 시작과 끝 위치를 한 번에 알고 싶다면 m.span()을 활용할 수 있습니다.

import re

p = re.compile("[A-Z][0-9]")
for m in p.finditer('A5B6C7D8'):
    print(m.span(), m.group())

# 출력:
# (0, 2) A5
# (2, 4) B6
# (4, 6) C7
# (6, 8) D8

이처럼 re.finditer()를 사용하면 단순히 매칭 여부만 확인하는 것이 아니라, 각 매칭이 문자열 내 어디에 위치하는지 정확한 인덱스 정보까지 얻을 수 있어 텍스트 분석, 하이라이트 처리, 위치 기반 치환 등 다양한 작업에 활용할 수 있습니다.