[파이썬] 문자열의 정규식과 패턴 매칭

정규식(regular expression)은 문자열에서 특정한 패턴을 찾아내기 위한 강력한 도구입니다. Python에서는 re 모듈을 사용하여 정규식을 다룰 수 있습니다. 이를 이용하면 문자열에서 특정한 패턴을 검색하거나 대체, 추출할 수 있습니다. 이번 글에서는 Python에서 문자열의 정규식과 패턴 매칭을 다루는 방법에 대해 알아보겠습니다.

정규식 패턴 만들기

패턴 매칭은 정규식 패턴을 통해 이루어집니다. 다음은 몇 가지 기본적인 정규식 패턴입니다:

re 모듈 사용하기

re 모듈을 사용하여 정규식 패턴을 처리할 수 있습니다. 먼저 re.match() 함수를 통해 문자열의 시작부터 패턴이 일치하는지 확인할 수 있습니다. 예를 들어,

import re

pattern = r"hello"
text = "hello world"

result = re.match(pattern, text)
print(result) # <re.Match object; span=(0, 5), match='hello'>

위의 코드에서 re.match() 함수를 사용하여 패턴 hello가 문자열 hello world의 시작과 일치하는지를 확인합니다. 결과로는 re.Match 객체가 반환됩니다. 이 객체를 통해 패턴이 일치한 위치와 대응하는 문자열을 확인할 수 있습니다.

re.search() 함수를 사용하면 전체 문자열을 검색하여 패턴과 일치하는 첫 번째 위치를 찾을 수 있습니다.

import re

pattern = r"world"
text = "hello world"

result = re.search(pattern, text)
print(result) # <re.Match object; span=(6, 11), match='world'>

위의 코드에서는 패턴 world를 검색하여 text 문자열에서 첫 번째 일치하는 위치를 찾았습니다.

패턴 추출하기

re.match()re.search()는 패턴이 일치하는 위치를 찾는 역할만 하지만, re.findall() 함수를 사용하면 패턴에 해당하는 모든 부분 문자열을 추출할 수 있습니다.

import re

pattern = r"\d+"
text = "I have 123 apples and 456 oranges"

result = re.findall(pattern, text)
print(result) # ['123', '456']

위의 코드에서는 숫자 패턴 "\d+"을 사용하여 문자열 text에서 모든 숫자를 추출하였습니다.

패턴 치환하기

re.sub() 함수를 사용하면 패턴에 해당하는 부분을 다른 문자열로 치환할 수 있습니다.

import re

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

result = re.sub(pattern, "orange", text)
print(result) # I have an orange

위의 코드에서는 패턴 apple을 찾아 orange로 치환하였습니다.

정규식 플래그

정규식에서 특정한 동작을 지정하는 플래그를 사용할 수 있습니다. 가장 자주 사용되는 플래그는 다음과 같습니다:

import re

pattern = r"java"
text = """
Java is a programming language.
JavaScript is a scripting language.
"""

result = re.findall(pattern, text, re.I)
print(result) # ['Java', 'JavaScript']

위의 코드에서는 패턴 java를 대소문자 구분 없이 일치하는 패턴을 찾는 예시입니다.

정규식은 문자열에서 패턴을 찾아내고 처리하는 강력한 도구입니다. re 모듈을 사용하여 Python에서 정규식을 다루는 방법을 배웠습니다. 이러한 기능을 응용하여 텍스트 분석, 데이터 추출, 데이터 정제 등 다양한 작업을 수행할 수 있습니다.

더 많은 정보를 원하시면 Python 공식 문서를 참고하시기 바랍니다.