[파이썬] 정규 표현식의 매칭 결과 문자열 분해

정규 표현식은 텍스트에서 패턴을 찾아내는 강력한 도구입니다. 하지만 매칭된 결과를 분해하여 원하는 정보를 추출하는 작업도 중요합니다. 이 글에서는 Python에서 정규 표현식의 매칭 결과 문자열을 어떻게 분해하는지 알아보겠습니다.

re 모듈

Python에서 정규 표현식을 사용하기 위해서는 re 모듈을 import해야 합니다. re 모듈은 정규 표현식을 컴파일하고, 매칭 결과를 분해하는 기능을 제공합니다.

import re

매칭 결과 분해하기

정규 표현식의 매칭 결과를 분해하기 위해서는 re 모듈의 match() 또는 search() 메소드를 사용합니다. 이 메소드들은 매칭된 결과를 Match 객체로 반환합니다.

pattern = r'(\d+)\s+(\w+)'
text = '10 apples, 20 bananas, 30 oranges'

result = re.search(pattern, text)

if result:
    # 매칭된 결과 분해
    num = result.group(1)
    fruit = result.group(2)
    
    print(f"Number: {num}")    # Number: 10
    print(f"Fruit: {fruit}")   # Fruit: apples

위의 코드에서는 정규 표현식 (\d+)\s+(\w+)을 사용하여 숫자 다음에 공백이 있고, 문자열이 있는 패턴을 검색합니다. search() 메소드를 사용하여 text에서 해당 패턴을 찾으면, 매칭된 결과를 result 변수에 할당합니다.

Match 객체를 통해 매칭된 결과를 분해하려면 group() 메소드를 사용합니다. group() 메소드에 매칭된 패턴의 인덱스를 전달하면, 해당 인덱스의 매칭 결과를 반환합니다.

위의 코드에서는 매칭된 결과의 첫 번째 그룹은 숫자이고, 두 번째 그룹은 과일 이름입니다. 따라서 group(1)은 숫자를, group(2)는 과일 이름을 반환합니다.

여러 개의 매칭 결과 분해하기

만약 하나의 텍스트에 매칭된 패턴이 여러 개 있다면, findall() 메소드를 사용하여 모든 매칭 결과를 리스트로 반환할 수 있습니다. 그리고 각 매칭 결과를 반복문을 통해 분해할 수 있습니다.

pattern = r'(\d+)\s+(\w+)'
text = '10 apples, 20 bananas, 30 oranges'

results = re.findall(pattern, text)

for result in results:
    num = result[0]
    fruit = result[1]
    
    print(f"Number: {num}")
    print(f"Fruit: {fruit}")

위의 코드에서는 findall() 메소드를 사용하여 text에서 매칭되는 모든 패턴을 리스트로 반환합니다. 그리고 for 반복문을 통해 각 매칭 결과를 순회하면서 분해합니다.

결론

Python의 re 모듈을 사용하면 정규 표현식의 매칭 결과 문자열을 쉽게 분해할 수 있습니다. Match 객체를 활용하여 매칭 결과에서 원하는 정보를 추출하는 것은 데이터 처리 및 문자열 다루기에서 매우 유용한 기능입니다. 다양한 정규 표현식을 활용하여 원하는 데이터를 추출하는데 도전해 보세요!