[파이썬] 정규 표현식의 여러 패턴 매칭

정규 표현식(Regular Expressions)은 문자열에서 패턴을 찾거나 매칭하는 도구로 많이 사용됩니다. 파이썬은 re 모듈을 통해 정규 표현식을 쉽게 다룰 수 있도록 지원하고 있습니다.

여기서는 파이썬에서 정규 표현식을 사용하여 다양한 패턴을 매칭하는 방법을 살펴보겠습니다.

1. 단순한 패턴 매칭

가장 기본적인 방법은 정규 표현식으로 문자열 내에 특정 패턴이 있는지 확인하는 것입니다. 다음은 re.search() 함수를 사용하여 주어진 문자열에서 “apple”이라는 단어를 찾는 예제입니다.

import re

text = "I have an apple."
pattern = "apple"

result = re.search(pattern, text)

if result:
    print("패턴이 매칭되었습니다.")
else:
    print("패턴이 매칭되지 않았습니다.")

이 코드는 “패턴이 매칭되었습니다.”라는 결과를 출력합니다.

2. 문자 클래스 사용

정규 표현식에서는 [ ] 기호를 사용하여 캐릭터 클래스(Character Class)를 정의할 수 있습니다. 이를 통해 특정 문자의 집합을 매칭할 수 있습니다.

다음은 숫자와 알파벳으로 이루어진 문자열에서 모든 숫자만 찾는 예제입니다.

import re

text = "I have 3 apples and 2 bananas."
pattern = "[0-9]"

result = re.findall(pattern, text)

print(result)

이 코드는 ['3', '2']라는 결과를 출력합니다. 캐릭터 클래스 내에 [0-9]라는 패턴을 사용하여 0부터 9까지의 숫자를 매칭했습니다.

3. 반복자 사용

패턴에 반복자(Metacharacters)를 사용하여 일정한 규칙으로 반복되는 문자열 패턴을 매칭할 수 있습니다.

다음은 문자열 내에서 “a”가 하나 이상 반복되는 모든 부분 문자열을 찾는 예제입니다.

import re

text = "I have an apple and a banana."
pattern = "a+"

result = re.findall(pattern, text)

print(result)

이 코드는 ['a', 'a', 'a', 'a']라는 결과를 출력합니다. 패턴 “a+”를 사용하여 “a”가 한 번 이상 반복되는 모든 부분 문자열을 찾았습니다.

4. 그룹화

정규 표현식에서 괄호 ()를 사용하여 그룹을 지정할 수 있습니다. 이를 통해 매칭 결과를 그룹으로 분리하거나 여러 패턴을 동시에 검색할 수 있습니다.

다음은 주어진 문자열에서 성과 이름을 분리하는 예제입니다.

import re

text = "John Doe"
pattern = "(\w+)\s(\w+)"

result = re.search(pattern, text)

if result:
    last_name = result.group(1)
    first_name = result.group(2)
    print("성: ", last_name)
    print("이름: ", first_name)

이 코드는 다음과 같은 결과를 출력합니다.

성:  John
이름:  Doe

위 예제에서 (\w+)는 한 개 이상의 알파벳 문자를 의미하며, \s는 공백 문자를 의미합니다. 이렇게 그룹화하여 매칭 결과에서 원하는 부분을 분리할 수 있습니다.

정규 표현식은 강력한 도구로 다양한 패턴을 매칭할 수 있습니다. 이번 포스트에서는 몇 가지 기본적인 패턴 매칭 방법을 살펴보았습니다. 파이썬의 re 모듈을 사용하면 더욱 복잡한 정규 표현식을 쉽게 다룰 수 있으니, 필요에 따라 더 많은 자세한 내용을 공부해보시기 바랍니다.