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

정규 표현식은 문자열 내에서 패턴을 찾거나 매칭하는 도구로 많이 사용됩니다. 이를 통해 우리는 특정한 패턴을 가진 문자열을 검색하거나 변형하는 등 다양한 작업을 수행할 수 있습니다. Python에서는 re라는 내장 모듈을 사용하여 정규 표현식을 지원하고 있습니다.

이번 블로그 포스트에서는 Python에서 정규 표현식을 사용하여 문자열을 매칭하고, 매칭된 결과를 검색하는 방법에 대해 살펴보겠습니다.

1. 정규 표현식 패턴 만들기

정규 표현식을 사용하기 전에 우선 패턴을 만들어야 합니다. 패턴은 매칭하고자 하는 문자열의 특정한 패턴을 나타내는 문자열입니다. 일반적으로 정규 표현식 패턴은 메타문자, 문자 클래스, 반복 기호 등을 조합하여 구성됩니다.

예를 들어, 이메일 주소를 검색하기 위한 패턴을 만들어 보겠습니다. 이메일 주소는 일반적으로 example@example.com과 같은 형식을 가지며, “@” 기호를 기준으로 이메일 주소와 도메인 이름이 구분됩니다. 따라서, 이메일 주소 패턴을 다음과 같이 작성할 수 있습니다.

import re

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

위의 예시에서 \b는 단어 경계를 의미하며, [A-Za-z0-9._%+-]는 영문 대소문자와 숫자, 특수문자 중 ._%+-를 포함한 문자를 나타냅니다. @ 기호 뒤에는 [A-Za-z0-9.-]+로 다시 영문 대소문자와 숫자, 특수문자 중 .-을 포함한 문자들이 반복됩니다. 마지막으로, 마침표(.) 이후에는 영문 대소문자가 2개 이상 반복되는 것을 의미합니다.

2. 문자열 매칭하기

패턴을 만든 후, 이제 해당 패턴을 사용하여 문자열을 매칭할 수 있습니다. Python에서 re 모듈 내의 search() 함수를 사용하여 매칭 작업을 수행할 수 있습니다.

예를 들어, 다음과 같은 문자열에 대해 이메일 주소 패턴을 검색해보겠습니다.

import re

email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
text = "Please contact me at example@example.com for more information."

match = re.search(email_pattern, text)
if match:
    print("매칭된 이메일 주소:", match.group())
else:
    print("이메일 주소를 찾을 수 없습니다.")

위의 예시에서 search() 함수는 주어진 텍스트에서 첫 번째로 매칭되는 이메일 주소를 찾습니다. 만약 매칭되는 이메일 주소가 있다면, group() 메소드로 매칭된 문자열을 가져와 출력합니다. 그렇지 않은 경우에는 “이메일 주소를 찾을 수 없습니다.”라는 메시지를 출력합니다.

3. 모든 매칭 결과 검색하기

search() 함수는 주어진 텍스트에서 첫 번째 매칭 결과를 찾지만, 만약 모든 매칭 결과를 검색하고 싶은 경우에는 findall() 함수를 사용할 수 있습니다.

import re

email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
text = "Please contact me at example@example.com or john@example.com for more information."

matches = re.findall(email_pattern, text)
if matches:
    print("매칭된 이메일 주소들:")
    for match in matches:
        print(match)
else:
    print("이메일 주소를 찾을 수 없습니다.")

위의 예시에서 findall() 함수는 주어진 텍스트에서 모든 매칭 결과를 찾아 리스트로 반환합니다. 만약 매칭되는 이메일 주소가 있다면, 각각의 매칭 결과를 출력합니다. 그렇지 않은 경우에는 “이메일 주소를 찾을 수 없습니다.”라는 메시지를 출력합니다.

결론

Python에서 정규 표현식을 사용하여 문자열을 매칭하고 검색하는 방법을 알아보았습니다. 정규 표현식은 강력한 도구로써 다양한 매칭 작업을 수행할 수 있으며, 이를 통해 문자열 내에서 특정한 패턴을 찾거나 처리하는 등의 작업을 할 수 있습니다. 더 복잡한 패턴을 작성하고 다양한 활용법을 익히면 좀 더 다양한 문자열 처리 작업을 수행할 수 있을 것입니다.