728x90

메타문자

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

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

문자 클래스 [ ]

[abc] 라면 "a,b,c" 중 한 개의 문자와 매치

[a-c] 가 [abc]랑 같다. 

  • [a-zA-Z] : 알파벳 모두
  • [0-9] : 숫자
  • [^0-9] : 숫자 아닌 문자만

자주 사용하는 문자 클래스

  • \d - 숫자와 매치, [0-9] 와 같음
  • \D -  숫자 아닌 것과 매치, [^0-9]
  • \s - whitespace 문자와 매치, [ \t\n\r\f\v] 와 같음
  • \S - whitespace 문자가 아닌 것과 매치
  • \w - 문자 + 숫자와 매치 [a-zA-Z0-9] 와 같음

Dot(.)

줄바꿈 문자인 \n 을 제외한 모든 문자와 매치됨.

a.b
# "a+ 모든 문자 + b"

a와 b라는 문자 사이에 어떤 문자가 들어와도 매치된다.

 

반복

*,  +,  {m,n}, ?

# a가 0부터 무한번 반복 가능
ca*t

# a가 1부터 무한번 반복 가능
ca+t

# 반복 ({m,n},?)

# a 2번 반드시 반복
ca{2}t
# a 2~5번 반복
ca{2,5}t
# {0,1} 반복, ? : 있어도 되고 없어도 된다.
ca?t

 

 

re 모듈

import re
p = re.compile('ab*')

정규식 표현을 컴파일해 돌려주는 객체 p를 이용해 문자열 검색에 사용한다.

 

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

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

+ Recent posts