Python에서 정규 표현식 사용하기
목차
- 서론
- 정규 표현식이란 무엇인가?
- Python에서 정규 표현식 사용하기
- 정규 표현식 모듈
re
소개 - 기본 패턴 매칭
- 자주 사용되는 메타문자
- 정규 표현식 모듈
- 정규 표현식 함수
re.match()
re.search()
re.findall()
re.finditer()
re.sub()
re.split()
- 정규 표현식 컴파일
- 실습 예제
- 마무리
- 추천 태그
1. 서론
정규 표현식(Regular Expressions)은 텍스트 데이터를 처리하고 조작하는 강력한 도구입니다. Python에서는 re
모듈을 사용하여 정규 표현식을 쉽게 활용할 수 있습니다. 이번 포스팅에서는 정규 표현식의 기본 개념부터 Python에서 정규 표현식을 사용하는 방법까지 초보 개발자도 쉽게 이해할 수 있도록 설명하겠습니다.
2. 정규 표현식이란 무엇인가?
정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용됩니다. 문자열 검색, 치환, 추출 등의 작업을 효율적으로 수행할 수 있게 해줍니다.
3. Python에서 정규 표현식 사용하기
3.1 정규 표현식 모듈 re
소개
Python에서는 re
모듈을 사용하여 정규 표현식을 처리합니다. re
모듈은 다양한 함수와 메소드를 제공하여 정규 표현식 작업을 쉽게 수행할 수 있습니다.
import re
3.2 기본 패턴 매칭
기본적인 정규 표현식을 사용하여 패턴 매칭을 할 수 있습니다. 예를 들어, 문자열에 숫자가 포함되어 있는지 확인할 수 있습니다.
pattern = r'\d+'
text = "There are 123 apples"
match = re.search(pattern, text)
if match:
print("숫자가 포함되어 있습니다.")
else:
print("숫자가 포함되어 있지 않습니다.")
3.3 자주 사용되는 메타문자
.
: 임의의 한 문자^
: 문자열의 시작$
: 문자열의 끝*
: 0개 이상의 반복+
: 1개 이상의 반복?
: 0개 또는 1개의 반복[]
: 문자 클래스|
: OR 연산자()
: 그룹화
pattern = r'^[A-Za-z]+$'
text = "HelloWorld"
match = re.match(pattern, text)
if match:
print("영문자만 포함된 문자열입니다.")
else:
print("영문자 외의 문자가 포함되어 있습니다.")
4. 정규 표현식 함수
4.1 re.match()
re.match()
함수는 문자열의 시작부터 패턴이 일치하는지 확인합니다.
pattern = r'Hello'
text = "Hello, world!"
match = re.match(pattern, text)
if match:
print("매칭되었습니다.")
else:
print("매칭되지 않았습니다.")
4.2 re.search()
re.search()
함수는 문자열 전체를 검색하여 패턴이 일치하는지 확인합니다.
pattern = r'world'
text = "Hello, world!"
match = re.search(pattern, text)
if match:
print("매칭되었습니다.")
else:
print("매칭되지 않았습니다.")
4.3 re.findall()
re.findall()
함수는 문자열에서 패턴과 일치하는 모든 부분을 리스트로 반환합니다.
pattern = r'\d+'
text = "There are 123 apples and 456 oranges"
matches = re.findall(pattern, text)
print(matches) # 출력: ['123', '456']
4.4 re.finditer()
re.finditer()
함수는 문자열에서 패턴과 일치하는 모든 부분을 반복자(iterator) 객체로 반환합니다.
pattern = r'\d+'
text = "There are 123 apples and 456 oranges"
matches = re.finditer(pattern, text)
for match in matches:
print(match.group()) # 출력: 123, 456
4.5 re.sub()
re.sub()
함수는 문자열에서 패턴과 일치하는 부분을 다른 문자열로 치환합니다.
pattern = r'\d+'
text = "There are 123 apples and 456 oranges"
new_text = re.sub(pattern, '#', text)
print(new_text) # 출력: There are # apples and # oranges
4.6 re.split()
re.split()
함수는 패턴을 기준으로 문자열을 분할하여 리스트로 반환합니다.
pattern = r'\s+'
text = "Hello, world! Welcome to Python."
words = re.split(pattern, text)
print(words) # 출력: ['Hello,', 'world!', 'Welcome', 'to', 'Python.']
5. 정규 표현식 컴파일
정규 표현식을 미리 컴파일하여 성능을 최적화할 수 있습니다.
pattern = re.compile(r'\d+')
text = "There are 123 apples and 456 oranges"
matches = pattern.findall(text)
print(matches) # 출력: ['123', '456']
6. 실습 예제
정규 표현식을 사용하여 이메일 주소를 검증하는 프로그램을 작성해보겠습니다.
import re
def validate_email(email):
pattern = r'^[\w\.-]+@[\w\.-]+\.\w+$'
if re.match(pattern, email):
return True
else:
return False
emails = ["test@example.com", "invalid-email", "hello@world.net"]
for email in emails:
if validate_email(email):
print(f"{email}은 유효한 이메일 주소입니다.")
else:
print(f"{email}은 유효하지 않은 이메일 주소입니다.")
7. 마무리
이번 포스팅에서는 Python에서 정규 표현식을 사용하는 방법을 알아보았습니다. 정규 표현식은 텍스트 데이터를 처리하고 조작하는 강력한 도구로, 다양한 패턴 매칭 작업을 효율적으로 수행할 수 있습니다. 정규 표현식을 잘 활용하면 데이터 처리 작업을 더욱 간편하게 수행할 수 있습니다.