IT/Python

[파이썬] 정규 표현식

초코-모찌 2024. 3. 12. 21:57
728x90
파이썬의 정규 표현식은 문자열에서 특정한 패턴을 검색, 대체, 또는 분리할 때 사용하는 도구입니다.
're' 모듈을 통해 정규 표현식을 지원하며, 이를 통해 복잡한 문자열 처리를 간단하게 할 수 있습니다.

 

1. 기본 사용법

're' 모듈의 주요 함수

  • re.match(): 문자열의 시작부터 패턴이 일치하는지 검사
  • re.search(): 문자열 전체에 대해 패턴이 일치하는 부분이 있는지 검사
  • re.findall(): 문자열에서 패턴과 일치하는 모든 부분을 찾아 리스트로 반환
  • re.sub(): 문자열에서 패턴과 일치하는 부분을 다른 문자열로 대체

 

1) re.match() 예제

import re

pattern = r"Python"
string = "Python is fun"

match = re.match(pattern, string)
if match:
    print("Match found:", match.group())
else:
    print("No match")

 

2) re.search() 예제

search = re.search("fun", string)
if search:
    print("Search found:", search.group())
else:
    print("No search found")

 

3) re.findall() 예제

string = "Python is fun, isn't it? Programming with Python is very interesting."
matches = re.findall("Python", string)
print(matches)  # 출력: ['Python', 'Python']

 

4) re.sub() 예제

replaced_string = re.sub("Python", "Coding", string)
print(replaced_string)

 

2. 정규 표현식 구성 요소

  • 문자와 메타 문자: 정규 표현식에서는 일반 문자와 '특별한 의미를 가진' 메타 문자(meta characters)를 구분합니다. 예를 들어, a는 'a'라는 문자 자체를 의미하는 반면, .(점)은 '임의의 한 문자'를 의미하는 메타 문자입니다.
  • 이스케이핑: 메타 문자를 일반 문자로 매칭하고 싶을 때는 \ (백슬래시)를 사용해 이스케이프합니다. 예를 들어, .는 임의의 문자와 일치하지만, \.는 실제 '.' 문자와 일치합니다.

 

정규 표현식 패턴

  • .: 임의의 한 문자와 일치합니다.
  • ^: 문자열의 시작과 일치합니다.
  • $: 문자열의 끝과 일치합니다.
  • *: 바로 앞의 문자가 0번 이상 반복되는 경우와 일치합니다.
  • +: 바로 앞의 문자가 1번 이상 반복되는 경우와 일치합니다.
  • ?: 바로 앞의 문자가 0번 또는 1번 나타나는 경우와 일치합니다.
  • {m}: 바로 앞의 문자가 m번 나타나는 경우와 일치합니다.
  • {m,n}: 바로 앞의 문자가 최소 m번, 최대 n번 나타나는 경우와 일치합니다.
  • [abc]: 괄호 안의 문자들 중 하나와 일치합니다.
  • |: 둘 중 하나와 일치합니다 (OR 조건).
  • (pattern): 패턴을 그룹으로 묶습니다.

 

자주 사용되는 메타 문자

  • [ ]: 대괄호 안에 있는 문자들 중 하나와 일치합니다. 예를 들어, [abc]는 'a', 'b', 'c' 중 하나와 일치합니다.
  • -: 범위를 나타내는 데 사용됩니다. 예를 들어, [a-z]는 'a'부터 'z'까지의 소문자 알파벳 중 하나와 일치합니다.
  • |: 논리적 'OR'을 의미합니다. 예를 들어, cat|dog는 'cat' 또는 'dog'와 일치합니다.
  • *와 +: '*'는 0회 이상 반복되는 경우와 일치하고, '+'는 1회 이상 반복되는 경우와 일치합니다.
  • ?: 바로 앞의 문자가 0회 또는 1회 나타나는 경우와 일치합니다.
  • { }: 지정된 횟수만큼 반복되는 경우와 일치합니다. 예를 들어, a{2,3}는 'a'가 2회 또는 3회 연속해서 나타나는 경우와 일치합니다.
728x90
반응형