[TIL] Python 정규표현식(Regular Expression) 정리 📘

dosilv·2021년 3월 6일
2
post-thumbnail
post-custom-banner

🎲 목표: 어렵고 헷갈리는 (하지만 유용한) 정규표현식... 차근차근 알아보자~~

▶ 목차
🔎 정규표현식(Regular Expression)이란?
🔎 정규표현식 사용법
🔎 메타문자(Meta characters)
🔎 정규표현식 메서드


🔎 정규표현식(Regular Expression)이란?

  • 복잡한 문자열을 처리할 때 사용하는 기법
  • 파이썬뿐만 아니라 대부분의 현대 프로그래밍 언어에서 쓰이는 DSL(Domain Specific Language)
  • 특정 문자열을 찾고 싶을 때 or 특정 문자열을 대체하고 싶을 때 주로 사용!

🔎 정규표현식 사용법

step 1. import re로 모듈을 임포트한 뒤
step 2. 두 가지 방법이 있음!

찾을 문자열 = "apple", 탐색할 문자열 = "I like apple!"인 경우

(1) 컴파일 후 매칭

pattern = re.compile("apple")
   ▶ 패턴 객체를 반환
x = pattern.search("I like apple!")
   ▶ 패턴 객체의 검색 메서드로 검색 수행

(2) 축약형

x = re.search("apple", "I like apple!")

일회성 작업에는 축약형이 간단하나, 반복 수행이 필요한 경우 컴파일로 패턴 객체를 생성해 여러 번 재사용 가능


🔎 메타문자(Meta characters)

  • 메타 문자란? 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자

[]

  • 문자클래스
  • [] 사이의 문자들 중 하나와 매치 (or)
  • 하이픈(-)으로 연결 가능 ([0-9], [a-z])
  • [^ ]으로 시작할 경우 반대 의미 (해당 문자가 아니면 매치)
  • 예) "[cpt]op"은 "cop", "pop", "top"과 매치

.(dot)

  • \n을 제외한 모든 문자와 매치
  • 예) "ab."은 "abc", "ab0", "ab$"... 과 매치
  • 단, 문자클래스 안의 . ([.])은 말 그대로 '.'을 의미함

*

  • 0회 이상 반복

+

  • 1회 이상 반복

{n} / {n, } / {, n} / {m, n}

  • {n} : 반드시 n회 반복
  • {n, } : n~∞회 반복
  • {, n} : 0~n회 반복
  • {m, n} : m~n회 반복

?

  • 0회 또는 1회 (있어도 되고 없어도 됨)

^

  • 문자열의 시작

$

  • 문자열의 끝

\

  • 이스케이프, 메타문자를 일반문자로 인식하게 함

()

  • 그룹핑, 추출할 패턴을 지정

축약 표현

\d

숫자

\D

숫자가 아닌 것 (텍스트, 특수문자, white space)

\s

white space (space, tap, new line)

\S

white space가 아닌 것 (텍스트, 특수문자, 숫자)

\w

문자(텍스트&숫자)
*특문 제외, 단 underscore(_) 포함

\W

문자(텍스트&숫자)가 아닌 것 (특문, white space)


🔎 정규표현식 메서드

📌 pattern 객체의 메서드

match()

문자열의 처음부터 정규식과 매치되는지 조사
▶ match 객체 또는 None 반환

문자열 전체를 검색하여 정규식과 매치되는지 조사
▶ 매치되는 첫 문자열로 match 객체 또는 None 반환

findall()

정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려줌

finditer()

정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려줌

match, search 메서드는 match 객체(알아보기 힘든...!)를 돌려주기 때문에 보통 다음과 같이 프로그램을 작성한다

p = re.compile(정규표현식)
m = p.match(탐색할 문자열)
if m:
    print('Match found: ', m.group())
else:
    print('No match')

📌 match 객체의 메서드

group()

매치된 문자열을 돌려줌

start()

매치된 문자열의 시작위치를 돌려줌

end()

매치된 문자열의 끝 위치를 돌려줌

span()

매치된 문자열의 시작, 끝 위치를 튜플로 돌려줌


🙇‍♀️참고한 자료!

07장 정규표현식 - 점프 투 파이썬
예제로 배우는 파이썬 프로그래밍 - 정규 표현식 Regex

profile
DevelOpErUN 성장일기🌈
post-custom-banner

0개의 댓글