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

정규 표현식은 문자열 패턴을 정의하고 이에 맞는 문자열을 찾아낼 때 유용한 도구입니다. Python에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다. 이번 포스트에서는 Python에서 정규 표현식의 매칭 결과를 추출하는 방법을 알아보겠습니다.

매칭 결과 추출하기

정규 표현식을 사용하여 문자열을 검색한 후, 매칭된 결과를 추출하는 방법은 다양합니다. 다음은 주어진 텍스트에서 이메일 주소를 추출하는 예시 코드입니다.

import re

text = "Please contact me at email@example.com for further information."

pattern = r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"

matches = re.findall(pattern, text)

for match in matches:
    print(match)

위의 코드에서는 re.findall() 함수를 사용하여 정규 표현식 패턴과 주어진 텍스트를 매칭하여 모든 매칭된 결과를 리스트로 반환합니다. 그 후, 반환된 리스트의 요소를 순회하며 매칭 결과를 출력합니다.

위 예시에서는 이메일 패턴을 사용했지만, 다른 정규 표현식 패턴을 사용하여 다른 유형의 정보를 추출할 수도 있습니다. 예를 들어, 전화번호, 주민등록번호, URL 등을 추출할 수도 있습니다. 정규 표현식을 사용하여 원하는 패턴을 정의하고 이를 통해 매칭 결과를 추출할 수 있습니다.

매칭 결과 그룹화하기

정규 표현식에서는 매칭된 결과를 그룹으로 나눌 수도 있습니다. 이를 활용하면 특정 부분만을 추출하거나 패턴을 조합하여 더 복잡한 추출 작업을 수행할 수 있습니다.

다음은 주어진 텍스트에서 이름과 이메일 주소를 추출하는 예시 코드입니다.

import re

text = "John Doe's email address is john.doe@example.com"

pattern = r"([A-Za-z ]+)'s email address is ([a-zA-Z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,})"

matches = re.findall(pattern, text)

for match in matches:
    name, email = match
    print(f"Name: {name}")
    print(f"Email: {email}")

위 예시에서는 정규 표현식 내에서 괄호 ()를 사용하여 그룹을 만듭니다. 그룹은 re.findall() 함수의 반환값으로 나타날 때 튜플 형태로 반환됩니다. 이를 활용하여 이름과 이메일 주소를 각각 추출하고 출력합니다.

매칭 결과를 그룹화하여 추출할 때에는 주어진 텍스트와의 패턴 일치에 유의해야 합니다. 패턴에 맞지 않는 텍스트가 주어진 경우, 매칭 결과가 없거나 원하는 형태와 다를 수 있습니다.

결론

정규 표현식은 Python에서 문자열 패턴을 검색하고 추출하는 데 유용한 도구입니다. re 모듈의 함수를 사용하여 정규 표현식을 처리하고 매칭 결과를 추출할 수 있습니다. 매칭된 문자열을 추출하는 단순한 방법부터 매칭 결과를 그룹화하여 복잡한 정보를 추출할 수도 있습니다. 정규 표현식을 응용하여 다양한 패턴을 매칭하고 원하는 정보를 추출해보세요.