[파이썬] 정규 표현식의 매칭 결과 반복 순회

정규 표현식(Regular Expression)은 문자열에서 패턴을 검색하고 매칭시키는 강력한 도구입니다. Python의 re 모듈을 사용하여 손쉽게 정규 표현식을 사용할 수 있습니다. 이번 글에서는 정규 표현식 매칭 결과를 반복적으로 순회하는 방법에 대해 알아보겠습니다.

re.findall() 메서드

re.findall() 메서드는 주어진 정규 표현식에 매칭되는 모든 패턴을 찾아 리스트로 반환합니다. 이를 통해 매칭 결과를 반복적으로 순회할 수 있습니다. 다음은 re.findall() 메서드의 예시입니다.

import re

text = "Hello, my name is John. I live in New York City."

pattern = r"\b\w+\b"  # 모든 단어에 매칭되는 정규 표현식

matches = re.findall(pattern, text)
for match in matches:
    print(match)

위 코드는 문자열 text에서 모든 단어를 찾아 출력하는 예시입니다. re.findall() 메서드는 pattern에 매칭되는 모든 패턴을 리스트로 반환하므로, matches 리스트를 순회하여 각 패턴을 출력할 수 있습니다.

re.finditer() 메서드

re.finditer() 메서드는 re.findall()과 유사하지만, 매칭 결과를 반복 가능한 객체(iterator)로 반환합니다. 이를 이용하여 결과를 순회할 수 있습니다. 다음은 re.finditer() 메서드의 예시입니다.

import re

text = "Hello, my name is John. I live in New York City."

pattern = r"\b\w+\b"  # 모든 단어에 매칭되는 정규 표현식

matches = re.finditer(pattern, text)
for match in matches:
    print(match.group())

위 코드는 문자열 text에서 모든 단어를 찾아 출력하는 예시입니다. re.finditer() 메서드는 match 객체를 반환하므로, 이를 이용하여 매칭된 패턴을 출력할 수 있습니다.

re.finditer()를 이용한 매칭 위치 확인

때로는 정규 표현식 매칭 결과의 위치 또한 알고 싶을 수 있습니다. re.finditer() 메서드와 match.span() 메서드를 이용하면 각 패턴의 시작과 끝 위치를 확인할 수 있습니다. 다음은 위치도 함께 출력하는 예시입니다.

import re

text = "Hello, my name is John. I live in New York City."

pattern = r"\b\w+\b"  # 모든 단어에 매칭되는 정규 표현식

matches = re.finditer(pattern, text)
for match in matches:
    start = match.start()
    end = match.end()
    print(match.group(), ":", start, "-", end)

위 코드는 문자열 text에서 각 단어와 해당 단어의 시작과 끝 위치를 출력하는 예시입니다. match.start() 메서드는 매칭된 패턴의 시작 위치를, match.end() 메서드는 끝 위치를 반환합니다.

정규 표현식의 매칭 결과를 반복적으로 순회하는 방법에 대해 알아보았습니다. re.findall()re.finditer() 메서드를 활용하여 매칭 결과를 처리하는 유용한 작업을 수행할 수 있습니다.