정규 표현식은 문자열에서 특정한 패턴을 검색하고 추출하는 강력한 도구입니다. 이를 통해 데이터의 정제, 검색 또는 변환과 같은 작업을 훨씬 더 효과적으로 수행할 수 있습니다.
이번 글에서는 Python에서 정규 표현식을 사용하여 매칭된 문자열을 추출하는 방법에 대해 알아보겠습니다.
re 모듈
Python에서 정규 표현식을 사용하기 위해서는 re
모듈을 import 해야 합니다. re
모듈에는 다양한 함수가 제공되며, 그 중에서 search()
함수를 사용하여 매칭된 첫 번째 결과를 추출할 수 있습니다.
import re
pattern = r'\b[A-Za-z]+\b'
text = 'Hello World'
result = re.search(pattern, text)
if result:
matched_string = result.group()
print(f"매칭된 문자열: {matched_string}")
else:
print("매칭된 문자열이 없습니다.")
위의 예제에서는 정규 표현식 패턴 '\b[A-Za-z]+\b'
을 사용하여 문자열에서 영문 단어를 추출하고 있습니다. search()
함수는 매칭된 첫 번째 결과를 반환하며, group()
메소드를 통해 추출된 문자열에 접근할 수 있습니다.
findall() 함수
만약 매칭된 모든 결과를 한 번에 추출하고 싶다면 findall()
함수를 사용할 수 있습니다. 이 함수는 매칭된 모든 결과를 리스트로 반환합니다.
import re
pattern = r'\b[A-Za-z]+\b'
text = 'Hello World'
result = re.findall(pattern, text)
if result:
for matched_string in result:
print(f"매칭된 문자열: {matched_string}")
else:
print("매칭된 문자열이 없습니다.")
위의 예제에서는 findall()
함수를 사용하여 모든 영문 단어를 추출하였습니다. findall()
함수는 매칭된 모든 결과를 리스트로 반환하므로, 반복문을 통해 모든 결과에 접근할 수 있습니다.
다른 메타 문자 및 특수 패턴 활용
정규 표현식에는 다양한 메타 문자와 특수 패턴이 있습니다. 이들을 조합하여 원하는 패턴을 정확하게 매칭할 수 있습니다. 다음은 몇 가지 예시입니다:
\d
: 숫자에 매칭\w
: 단어 문자에 매칭\s
: 공백 문자에 매칭.
: 어떠한 문자에도 매칭
import re
pattern = r'\b[A-Za-z]+\b\.\d+'
text = 'Hello World.42'
result = re.search(pattern, text)
if result:
matched_string = result.group()
print(f"매칭된 문자열: {matched_string}")
else:
print("매칭된 문자열이 없습니다.")
위의 예제에서는 '\b[A-Za-z]+\b\.\d+'
패턴을 사용하여 “단어.숫자” 형식의 문자열을 추출하고 있습니다. 위의 예제에서는 "Hello World.42"
와 같은 문자열에서 "World.42"
를 추출합니다.
정규 표현식은 매우 강력한 도구입니다. 패턴을 정확히 작성하고 메타 문자와 특수 패턴을 잘 활용하면 원하는 문자열을 손쉽게 추출할 수 있습니다. 참고로 정규 표현식은 대소문자를 구분하기 때문에 패턴 작성 시 주의가 필요합니다.