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

정규 표현식(Regular Expression)은 특정 패턴을 찾거나 매칭하기 위해 사용되는 강력한 도구입니다. Python에서는 re 모듈을 통해 정규 표현식을 사용할 수 있습니다. 이번 블로그 포스트에서는 Python에서 정규 표현식의 매칭 결과 문자열을 추출하는 방법에 대해 알아보겠습니다.

1. re.match()

re.match() 함수를 사용하면 문자열이 정규 표현식과 매칭되는지 확인할 수 있습니다. 만약 매칭되는 패턴이 있다면, Match 객체를 반환합니다. 이 객체를 통해 매칭된 문자열을 추출할 수 있습니다.

다음은 예시 코드입니다.

import re

pattern = r'Hello \w+'  # Hello와 그 뒤에 오는 단어에 매칭되는 정규 표현식

text = "Hello world!"  # 매칭되는 문자열

match = re.match(pattern, text)  # 정규 표현식과 문자열 매칭

if match:
    matched_string = match.group()  # 매칭된 문자열 추출
    print(f"매칭된 문자열: {matched_string}")
else:
    print("매칭되는 패턴이 없습니다.")

위 코드는 “Hello world!” 문자열에 Hello와 그 뒤에 오는 단어에 매칭되는 패턴을 확인합니다. re.match() 함수를 통해 매칭 결과가 있을 경우, Match 객체의 group() 메서드를 통해 매칭된 문자열을 추출하고 출력합니다.

2. re.search()

re.search() 함수는 문자열 내에서 정규 표현식과 첫 번째로 매칭되는 부분을 찾아줍니다. re.match()와 동일한 방식으로 매칭된 문자열을 추출할 수 있습니다.

다음은 예시 코드입니다.

import re

pattern = r'\d+'  # 연속된 숫자에 매칭되는 정규 표현식

text = "The price is $100."  # 매칭되는 문자열

match = re.search(pattern, text)  # 정규 표현식과 문자열 매칭

if match:
    matched_string = match.group()  # 매칭된 문자열 추출
    print(f"매칭된 문자열: {matched_string}")
else:
    print("매칭되는 패턴이 없습니다.")

위 코드는 “The price is $100.” 문자열에서 연속된 숫자에 매칭되는 패턴을 찾습니다. re.search() 함수를 통해 매칭 결과가 있을 경우, Match 객체의 group() 메서드를 통해 매칭된 문자열을 추출하고 출력합니다.

3. re.findall()

re.findall() 함수를 사용하면 문자열 내에서 정규 표현식과 매칭되는 모든 부분을 찾아 리스트로 반환합니다. 이를 통해 매칭 결과 문자열을 모두 추출할 수 있습니다.

다음은 예시 코드입니다.

import re

pattern = r'\b\w{4}\b'  # 4글자로 이루어진 단어에 매칭되는 정규 표현식

text = "The quick brown fox jumps over the lazy dog."  # 매칭되는 문자열들

matched_strings = re.findall(pattern, text)  # 정규 표현식과 문자열 매칭 후 모든 매칭 결과 추출

if matched_strings:
    print(f"매칭된 문자열들: {matched_strings}")
else:
    print("매칭되는 패턴이 없습니다.")

위 코드는 “The quick brown fox jumps over the lazy dog.” 문자열에서 4글자로 이루어진 단어에 매칭되는 패턴을 찾습니다. re.findall() 함수를 통해 매칭 결과가 있을 경우, 매칭된 모든 문자열을 리스트로 추출하고 출력합니다.

정규 표현식의 매칭 결과 문자열 추출은 Python에서 많이 활용되는 작업 중 하나입니다. re.match(), re.search(), re.findall() 함수를 적절히 활용하여 원하는 패턴과 매칭되는 문자열을 추출할 수 있습니다.