Regular Expressions: 기본부터 응용까지
파이썬에서 문자열 처리를 할 때, 정규 표현식(Regular Expressions, 줄여서 regex)은 매우 유용한 도구다.
정규 표현식을 사용하면 패턴을 기반으로 문자열을 검색하고, 수정하며, 추출할 수 있다.
이번 포스팅에서는 정규 표현식의 기본 개념부터 활용 방법까지 단계별로 살펴보려한다.
정규 표현식이란?
정규 표현식은 문자열에서 특정 패턴을 찾고, 대체하거나 삭제하는 데 사용되는 문자열 검색 패턴이다.
다양한 문자 집합과 메타문자를 사용하여 복잡한 문자열 패턴을 정의할 수 있다.
파이썬에서 정규 표현식 사용하기
파이썬에서 정규 표현식을 사용하려면 re 모듈을 활용해야 한다.
이 모듈은 다양한 정규 표현식 기능을 제공하며, 기본적으로 다음과 같은 메서드를 지원한다:
- re.match(): 문자열의 시작에서 패턴을 찾는다.
- re.search(): 문자열 전체에서 패턴을 검색한다.
- re.findall(): 패턴과 일치하는 모든 문자열을 리스트로 반환한다.
- re.finditer(): 패턴과 일치하는 모든 문자열을 반복 가능한 객체로 반환한다.
- re.sub(): 패턴과 일치하는 문자열을 다른 문자열로 대체한다.
정규 표현식의 기본 구성 요소
정규 표현식은 다양한 문자와 기호로 구성된다.
주요 구성 요소는 다음과 같다:
1. 리터럴 문자
리터럴 문자는 패턴에서 직접적으로 검색할 문자를 의미한다.
ex) r"abc"는 문자열 "abc"를 찾는다.
2. 메타문자
메타문자는 특수한 의미를 가지며, 정규 표현식의 패턴을 정의하는 데 사용된다.
주요 메타문자는 다음과 같다:
- .: 임의의 한 문자 (줄바꿈 문자 제외)
- ^: 문자열의 시작
- $: 문자열의 끝
- *: 0회 이상의 반복
- +: 1회 이상의 반복
- ?: 0회 또는 1회의 반복
- {n}: 정확히 n회의 반복
- {n,}: n회 이상의 반복
- {n,m}: n회에서 m회 사이의 반복
3. 문자 클래스
문자 클래스는 대괄호 []를 사용하여 정의하며, 이는 [] 안에 포함된 문자 중 하나와 일치함을 의미한다.
예를 들어:
- [abc]: 'a', 'b', 또는 'c'와 일치한다.
- [a-z]: 소문자 알파벳과 일치한다.
4. 선택 및 그룹화
- |: 선택 연산자로, 패턴 중 하나와 일치한다.
- ex) a|b는 'a' 또는 'b'와 일치한다.
- () : 그룹화 연산자로, 서브패턴을 묶는 데 사용된다.
- ex) (abc)+는 'abc'가 1회 이상 반복되는 패턴과 일치한다.
5. 이스케이프 문자
- \: 특수 문자를 이스케이프 처리하여 문자로 인식한다.
- ex) \.는 실제 점 문자와 일치한다.
예시를 통한 정규 표현식 이해
정규 표현식의 기본 개념을 이해하는 데 도움을 주기 위해 몇 가지 예시를 살펴보자:
1. 문자열에서 이메일 주소 찾기
import re
text = "문의 사항은 example@example.com으로 보내주세요."
pattern = r"\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}\b"
matches = re.findall(pattern, text)
print(matches)
> ['example@example.com']
이 정규 표현식은 이메일 주소의 기본적인 형식을 검증한다.
\b는 단어 경계를 나타내며, [\w.%+-]+ 는 이메일 사용자 이름 부분을, @는 @ 문자를, [\w.-]+ 는 도메인 이름 부분을,
.[a-zA-Z]{2,} 는 도메인 확장자를 나타낸다.
2. 문자열에서 전화번호 형식 검출하기
import re
text = "연락처: 010-1234-5678, 02-345-6789, 123-456-7890"
pattern = r"\b\d{2,4}[-]\d{2,4}[-]\d{4}\b"
matches = re.findall(pattern, text)
print(matches)
> ['010-1234-5678', '02-345-6789', '123-456-7890']
이 정규 표현식은 전화번호 형식의 문자열을 찾는다.
\d{2,4}는 2에서 4자리의 숫자를 나타내며, [-]는 하이픈 문자와 일치한다.
정규 표현식 활용의 팁
정규 표현식을 사용할 때, 복잡한 패턴을 사용할수록 오류가 발생할 확률이 높다.
따라서 다음과 같은 팁을 기억하면 유용하다:
- 단계별로 테스트: 복잡한 정규 표현식을 작성할 때는 단순한 패턴부터 시작하여 점진적으로 복잡성을 추가하자.
- 주석 사용: 정규 표현식 내에 주석을 사용하여 패턴의 각 부분이 무엇을 의미하는지 설명하는 것이 좋다.
- 문서화: 코드와 함께 정규 표현식의 목적과 패턴을 문서화하여 유지보수 시 도움이 되도록 하자.
결론
정규 표현식은 문자열 처리에 활용되는 Python의 강력한 도구로, 정확한 문법 구사 시 반복 작업을
손쉽게 처리할 수 있다는 점을 예제를 통해 확인하였다.
정규 표현식의 기본 개념과 주요 메서드, 패턴 구성 요소를 숙지하여 자유롭게 구사할 수 있도록 훈련하자.
'Python 잡학사전' 카테고리의 다른 글
append와 extend (0) | 2024.07.22 |
---|