[파이썬] 정규 표현식의 기본 패턴

정규 표현식은 문자열에서 특정한 패턴을 찾거나 매칭할 때 사용되는 강력한 도구입니다. Python에서는 re 모듈을 사용하여 정규 표현식을 처리할 수 있습니다. 이번 포스트에서는 Python에서 정규 표현식의 기본 패턴을 알아보겠습니다.

1. 문자열 매칭

정규 표현식을 사용하여 문자열 내에서 특정한 패턴을 찾을 수 있습니다. match() 함수는 문자열의 시작부터 패턴이 일치하는지 확인하고, search() 함수는 문자열 내에서 패턴과 일치하는 부분을 찾습니다.

import re

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

result1 = re.match(pattern, text)
result2 = re.search(pattern, text)

print(result1)  # None
print(result2)  # <re.Match object; span=(9, 14), match='apple'>

위의 예제에서는 “apple”이라는 패턴을 찾기 위해 match() 함수와 search() 함수를 사용합니다. match() 함수는 문자열의 시작부터 패턴이 일치해야 하므로, “I have an apple”에서는 일치하지 않습니다. 반면 search() 함수는 패턴과 일치하는 부분을 찾을 수 있으므로 결과로 "apple"이라는 매치 객체를 반환합니다.

2. 메타문자

정규 표현식에서는 특정한 의미를 가지고 있는 메타문자들을 사용할 수 있습니다. 이러한 메타문자들은 패턴 매칭을 더욱 효율적으로 할 수 있도록 도와줍니다.

import re

pattern1 = r"gra.y"
pattern2 = r"^apple"
pattern3 = r"banana$"
pattern4 = r"[aeiou]"

text = "gray apple banana orange"

result1 = re.findall(pattern1, text)
result2 = re.findall(pattern2, text)
result3 = re.findall(pattern3, text)
result4 = re.findall(pattern4, text)

print(result1)  # ['gray']
print(result2)  # ['apple']
print(result3)  # ['banana']
print(result4)  # ['a', 'e', 'a', 'a', 'o', 'e']

위의 예제에서는 메타문자들을 사용하여 패턴 매칭을 수행합니다. .은 임의의 한 문자와 매칭되므로 "gray"라는 문자열의 패턴을 찾을 수 있습니다. ^는 패턴이 문자열의 시작과 일치하므로 "apple"이라는 문자열의 패턴을 찾을 수 있습니다. $는 패턴이 문자열의 끝과 일치하므로 "banana"라는 문자열의 패턴을 찾을 수 있습니다. []는 문자 집합 중 하나와 매칭되므로 모음을 찾을 수 있는 패턴을 생성할 수 있습니다.

3. 반복 메타문자

패턴을 더욱 유연하게 만들기 위해 반복 메타문자를 사용할 수 있습니다.

import re

pattern1 = r"go*gle"
pattern2 = r"go+gle"
pattern3 = r"go?gle"
pattern4 = r"go{2}gle"
pattern5 = r"go{1,3}gle"

text = "ggle google gogle gooogle goooogle"

result1 = re.findall(pattern1, text)
result2 = re.findall(pattern2, text)
result3 = re.findall(pattern3, text)
result4 = re.findall(pattern4, text)
result5 = re.findall(pattern5, text)

print(result1)  # ['ggle', 'google', 'gogle', 'gooogle', 'gooooogle']
print(result2)  # ['google', 'gooogle', 'gooooogle']
print(result3)  # ['ggle', 'google']
print(result4)  # ['gogle']
print(result5)  # ['google', 'gogle', 'google']

위의 예제에서는 반복 메타문자를 사용하여 패턴을 더욱 유연하게 만듭니다. *는 이전 패턴이 0번 이상 반복되는 경우와 매칭되므로 "ggle", "google", "gogle", "gooogle", "gooooogle"이라는 패턴을 찾을 수 있습니다. +는 이전 패턴이 1번 이상 반복되는 경우와 매칭되므로 "google", "gooogle", "gooooogle"이라는 패턴을 찾을 수 있습니다. ?는 이전 패턴이 0번 또는 1번 등장하는 경우와 매칭되므로 "ggle", "google"이라는 패턴을 찾을 수 있습니다. {n}는 이전 패턴이 n번 반복되는 경우와 매칭되므로 "gogle"이라는 패턴을 찾을 수 있습니다. {min, max}는 이전 패턴이 최소 min번, 최대 max번 반복되는 경우와 매칭되므로 "google", "gogle", "google"이라는 패턴을 찾을 수 있습니다.


정규 표현식은 복잡한 문자열 처리 작업에서 매우 유용한 도구입니다. 이번 포스트에서는 Python에서 정규 표현식의 기본 패턴을 알아보았습니다. 자세한 내용은 Python 공식 문서나 다양한 강의와 자료들을 참고해보시기 바랍니다.