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

정규 표현식은 문자열에서 특정한 패턴을 검색하고 추출하는 강력한 도구입니다. 이를 통해 데이터의 정제, 검색 또는 변환과 같은 작업을 훨씬 더 효과적으로 수행할 수 있습니다.

이번 글에서는 Python에서 정규 표현식을 사용하여 매칭된 문자열을 추출하는 방법에 대해 알아보겠습니다.

re 모듈

Python에서 정규 표현식을 사용하기 위해서는 re 모듈을 import 해야 합니다. re 모듈에는 다양한 함수가 제공되며, 그 중에서 search() 함수를 사용하여 매칭된 첫 번째 결과를 추출할 수 있습니다.

import re

pattern = r'\b[A-Za-z]+\b'
text = 'Hello World'

result = re.search(pattern, text)
if result:
    matched_string = result.group()
    print(f"매칭된 문자열: {matched_string}")
else:
    print("매칭된 문자열이 없습니다.")

위의 예제에서는 정규 표현식 패턴 '\b[A-Za-z]+\b'을 사용하여 문자열에서 영문 단어를 추출하고 있습니다. search() 함수는 매칭된 첫 번째 결과를 반환하며, group() 메소드를 통해 추출된 문자열에 접근할 수 있습니다.

findall() 함수

만약 매칭된 모든 결과를 한 번에 추출하고 싶다면 findall() 함수를 사용할 수 있습니다. 이 함수는 매칭된 모든 결과를 리스트로 반환합니다.

import re

pattern = r'\b[A-Za-z]+\b'
text = 'Hello World'

result = re.findall(pattern, text)
if result:
    for matched_string in result:
        print(f"매칭된 문자열: {matched_string}")
else:
    print("매칭된 문자열이 없습니다.")

위의 예제에서는 findall() 함수를 사용하여 모든 영문 단어를 추출하였습니다. findall() 함수는 매칭된 모든 결과를 리스트로 반환하므로, 반복문을 통해 모든 결과에 접근할 수 있습니다.

다른 메타 문자 및 특수 패턴 활용

정규 표현식에는 다양한 메타 문자와 특수 패턴이 있습니다. 이들을 조합하여 원하는 패턴을 정확하게 매칭할 수 있습니다. 다음은 몇 가지 예시입니다:

import re

pattern = r'\b[A-Za-z]+\b\.\d+'
text = 'Hello World.42'

result = re.search(pattern, text)
if result:
    matched_string = result.group()
    print(f"매칭된 문자열: {matched_string}")
else:
    print("매칭된 문자열이 없습니다.")

위의 예제에서는 '\b[A-Za-z]+\b\.\d+' 패턴을 사용하여 “단어.숫자” 형식의 문자열을 추출하고 있습니다. 위의 예제에서는 "Hello World.42"와 같은 문자열에서 "World.42"를 추출합니다.

정규 표현식은 매우 강력한 도구입니다. 패턴을 정확히 작성하고 메타 문자와 특수 패턴을 잘 활용하면 원하는 문자열을 손쉽게 추출할 수 있습니다. 참고로 정규 표현식은 대소문자를 구분하기 때문에 패턴 작성 시 주의가 필요합니다.