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

정규식(Regular Expression)은 특정한 패턴을 가진 문자열을 검색하거나 매칭하는데 사용되는 강력한 도구입니다. Python은 내장 모듈인 re를 사용하여 문자열의 정규식 검색과 매칭을 간편하게 수행할 수 있습니다. 이 글에서는 Python에서 정규식을 사용하여 문자열을 검색하고 매칭하는 방법에 대해 알아보겠습니다.

1. 정규식 패턴 만들기

파이썬에서 정규식을 사용하기 위해선, 먼저 검색 또는 매칭하고자 하는 패턴을 정의해야 합니다. 정규식 패턴은 raw string으로 표현되며, 다양한 메타문자와 기호를 사용하여 특정한 패턴을 나타낼 수 있습니다.

import re

pattern = r"ab*c"

위의 예제에서 r을 사용하여 raw string을 정의하고, "ab*c"라는 패턴을 나타냅니다. 이 패턴은 a로 시작하고, 그 뒤에 b가 0개 이상 있으며, 다음에 c가 나오는 문자열을 매칭합니다.

2. 문자열 검색하기

정규식 패턴을 정의한 후, 해당 패턴을 사용하여 문자열을 검색할 수 있습니다. re.search() 함수는 문자열에서 정규식 패턴과 일치하는 첫 번째 부분 문자열을 찾습니다.

import re

pattern = r"ab*c"
string = "ac"

match = re.search(pattern, string)
if match:
    print("일치하는 패턴을 찾았습니다!")
else:
    print("일치하는 패턴을 찾지 못했습니다!")

위의 예제에서 "ac"라는 문자열에서 ab*c 패턴과 일치하는 부분이 없으므로, "일치하는 패턴을 찾지 못했습니다!" 메시지가 출력됩니다.

3. 전체 문자열 매칭하기

정규식 패턴을 사용하여 문자열 전체와 매칭하려면 re.match() 함수를 사용할 수 있습니다. re.match() 함수는 문자열의 시작부터 정규식 패턴과 일치하는지 확인합니다.

import re

pattern = r"ab*c"
string = "abbbc"

match = re.match(pattern, string)
if match:
    print("문자열 전체와 일치하는 패턴을 찾았습니다!")
else:
    print("문자열 전체와 일치하는 패턴을 찾지 못했습니다!")

위의 예제에서 "abbbc"라는 문자열은 ab*c 패턴과 일치하므로, "문자열 전체와 일치하는 패턴을 찾았습니다!" 메시지가 출력됩니다.

4. 패턴과 일치하는 모든 부분 찾기

정규식 패턴과 일치하는 문자열의 모든 부분을 찾기 위해서는 re.findall() 함수를 사용할 수 있습니다. 이 함수는 문자열에서 정규식 패턴과 일치하는 모든 부분 문자열을 리스트로 반환합니다.

import re

pattern = r"ab*c"
string = "abacbca"

matches = re.findall(pattern, string)
if matches:
    print("일치하는 모든 패턴을 찾았습니다!")
    for match in matches:
        print(match)
else:
    print("일치하는 패턴을 찾지 못했습니다!")

위의 예제에서 "abacbca"라는 문자열에서 ab*c 패턴과 일치하는 abcabbc를 찾아 출력합니다.

정리

Python의 re 모듈을 사용하면 정규식을 활용하여 문자열 검색과 매칭을 효과적으로 수행할 수 있습니다. 이를 통해 특정한 패턴을 가진 문자열을 검색하거나 추출하는 등 다양한 작업을 수행할 수 있습니다.