[Day5] 파이썬으로 데이터 다루기

 

중요

정규식

정규 표현식의 기초, 메타 문자

그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자

. ^ $ * + ? { } [ ] \ | ( )

 

문자 클래스 []

문자 클래스로 만들어진 정규식은 "[ ] 사이의 문자들과 매치"라는 의미를 갖는다.

문자 클래스를 만드는 메타 문자인 [ ] 사이에는 어떤 문자도 들어갈 수 있다.

 

정규 표현식이 [abc]라면 이 표현식의 의미는 "a, b, c 중 한 개의 문자와 매치"를 뜻한다. 즉, 각각의 문자 하나씩 or로 연결 되어 있다고 생각하면 된다. 이해를 돕기 위해 문자열 "a", "cat", "dude"가 정규식 [abc]와 어떻게 매칭되는지 보면,

  • 'a'는 정규식과 일치하는 문자 'a'가 매칭
  • 'cat'은 정규식 'c'와 매칭
  • 'dude'는 정규식 a,b,c중 하나도 매칭되는것이 없다

 

[]안에 -을 사용하면 두 문자 사이의 범위를 의미 한다. 이때 범위가 맞는 문자여야 한다.

[0-9]는 [0123456789]와 동일한 의미를 가지게 된다.

자주 사용하는 문자 클래스

  • \d - 숫자와 매치, [0-9]와 동일한 표현식이다.
  • \D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
  • \s - whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
  • \S - whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.
  • \w - 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
  • \W - 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.

 

Dot(.)

.메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매칭.

a.b  → 'a'+ 모든 문자 + 'b'와 매칭
a[.]b → a.b와 매칭

여기서 []메타 문자를 사용하면 .은 순수 문자 그 자체로 인식하게 된다.

 

반복(*), 반복(+)

  1. *메타 문자가 나온 바로 앞에 있는 문자가 (0~무한대)반복 될 수 있다는 의미
  1. +메타 문자가 나온 바로 앞에 있는 문자가 (1~무한대)반복 될 수 있다는 의미

 

반복({m,n}, ?)

  1. {m} : 해당 메타 문자 앞에 나온 문자가 반드시 m회 반복을 의미
  2. {m,n}: 해당 메타 문자 앞에 나온 문자가 m~n회 반복을 의미
  3. ?: 해당 메타 문자 앞에 나온 문자가 있어도되고 없어도 되는걸 의미 {0,1}과 같은의미이다.

 

정규식을 이용한 문자열 검색

  • match(): 문자열의 처음부터 정규식과 매치되는지 조사한다.
  • search(): 문자열의 처음부터 정규식과 매치되는지 조사한다.
  • findall(): 정규식과 매치되는 모든 문자열(substring)을 리스트로 돌려준다.
  • finditer(): 정규식과 매치되는 모든 문자열(substring)을 반복 가능한 객체로 돌려준다.

findall함수를 제외하고 나머지 함수들의 리턴값은 match 객체를 반환한다.

 

match 객체의 메서드

  • group(): 매치된 문자열을 돌려준다.
  • start(): 매치된 문자열의 시작 위치를 돌려준다.
  • end(): 매치된 문자열의 끝 위치를 돌려준다.
  • span(): 매치된 문자열의 (시작, 끝)에 해당하는 튜플을 돌려준다.

 

참고자료

 

 

피어세션

  • namespace 와 scope 차이

 

'AI > 부스트 캠프 AI tech' 카테고리의 다른 글

[Day9] Pandas II,확률론  (0) 2021.01.28
[Day8] Pandas I,딥러닝 학습방법 이해하기  (0) 2021.01.27
[Day7] 경사하강법  (0) 2021.01.26
[Day6] Numpy/벡터/행렬  (0) 2021.01.25
[Day4] 파이썬 기초 문법III  (0) 2021.01.21
[Day3] 파이썬 기초 문법II  (0) 2021.01.20
[Day 2] 파이썬 기초 문법  (0) 2021.01.19
파이썬/AI 개발환경 준비  (0) 2021.01.18

+ Recent posts