Regular Expressions

박앨런·2024년 7월 18일

python 잡학사전

목록 보기
2/2

파이썬에서 문자열 처리를 할 때, 정규 표현식(Regular Expressions, 줄여서 regex)은 매우 유용한 도구다. 정규 표현식을 사용하면 패턴을 기반으로 문자열을 검색하고, 수정하며, 추출할 수 있다. 이 글에서는 정규 표현식의 기본 개념부터 활용 방법까지 단계별로 살펴보자.

정규 표현식이란?

정규 표현식은 문자열에서 특정 패턴을 찾고, 대체하거나 삭제하는 데 사용되는 문자열 검색 패턴이다. 다양한 문자 집합과 메타문자를 사용하여 복잡한 문자열 패턴을 정의할 수 있다.

파이썬에서 정규 표현식 사용하기

파이썬에서 정규 표현식을 사용하려면 re 모듈을 활용해야 한다. 이 모듈은 다양한 정규 표현식 기능을 제공하며, 기본적으로 다음과 같은 메서드를 지원한다:

  • re.match(): 문자열의 시작에서 패턴을 찾는다.
  • re.search(): 문자열 전체에서 패턴을 검색한다.
  • re.findall(): 패턴과 일치하는 모든 문자열을 리스트로 반환한다.
  • re.finditer(): 패턴과 일치하는 모든 문자열을 반복 가능한 객체로 반환한다.
  • re.sub(): 패턴과 일치하는 문자열을 다른 문자열로 대체한다.

정규 표현식의 기본 구성 요소

정규 표현식은 다양한 문자와 기호로 구성된다. 주요 구성 요소는 다음과 같다:

1. 리터럴 문자

리터럴 문자는 패턴에서 직접적으로 검색할 문자를 의미한다. 예를 들어, r"abc"는 문자열 "abc"를 찾는다.

2. 메타문자

메타문자는 특수한 의미를 가지며, 정규 표현식의 패턴을 정의하는 데 사용된다. 주요 메타문자는 다음과 같다:

  • .: 임의의 한 문자 (줄바꿈 문자 제외)
  • ^: 문자열의 시작
  • $: 문자열의 끝
  • *: 0회 이상의 반복
  • +: 1회 이상의 반복
  • ?: 0회 또는 1회의 반복
  • {n}: 정확히 n회의 반복
  • {n,}: n회 이상의 반복
  • {n,m}: n회에서 m회 사이의 반복

3. 문자 클래스

문자 클래스는 대괄호 []를 사용하여 정의한다. 이 안에 포함된 문자 중 하나와 일치한다. 예를 들어:

  • [abc]: 'a', 'b', 또는 'c'와 일치한다.
  • [a-z]: 소문자 알파벳과 일치한다.

4. 선택 및 그룹화

  • |: 선택 연산자로, 패턴 중 하나와 일치한다. 예를 들어, a|b는 'a' 또는 'b'와 일치한다.
  • () : 그룹화 연산자로, 서브패턴을 묶는 데 사용된다. 예를 들어, (abc)+는 'abc'가 1회 이상 반복되는 패턴과 일치한다.

5. 이스케이프 문자

  • \: 특수 문자를 이스케이프 처리하여 문자로 인식한다. 예를 들어, .는 실제 점 문자와 일치한다.

예시를 통한 정규 표현식 이해

정규 표현식의 기본 개념을 이해하는 데 도움을 주기 위해 몇 가지 예시를 살펴보자:

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자리의 숫자를 나타내며, [-]는 하이픈 문자와 일치한다.

정규 표현식 활용의 팁

정규 표현식을 사용할 때, 복잡한 패턴을 사용할수록 오류가 발생할 확률이 높다. 따라서 다음과 같은 팁을 기억하면 유용하다:

  • 단계별로 테스트: 복잡한 정규 표현식을 작성할 때는 단순한 패턴부터 시작하여 점진적으로 복잡성을 추가하자.
  • 주석 사용: 정규 표현식 내에 주석을 사용하여 패턴의 각 부분이 무엇을 의미하는지 설명하는 것이 좋다.
  • 문서화: 코드와 함께 정규 표현식의 목적과 패턴을 문서화하여 유지보수 시 도움이 되도록 하자.

결론

정규 표현식은 문자열 처리에서 강력한 도구다. 이 글에서는 정규 표현식의 기본 개념과 주요 메서드, 패턴 구성 요소를 소개했다. 정규 표현식을 잘 활용하면 복잡한 문자열 작업을 훨씬 수월하게 처리할 수 있다. 다양한 정규 표현식 예제와 실습을 통해 숙련도를 높여보자!

profile
영업 중.

0개의 댓글