0. 정규 표현식을 지원하는 re 모듈

파이썬에서는 정규 표현식을 지원하기 위해 re (regular expression) 모듈을 제공한다.
re 모듈은 파이썬을 설치할 때 자동으로 설치되는 기본 라이브러리로 따로 설치할 필요는 없다.

import re

 

1. 메타 문자 (meta characters)

1. [ ] : 문자들의 집합을 나타냄

리스트안의 문자들은 각각 개별적으로 존재한다.
(ex. [amk] 는 'a' 또는 'm' 또는 'k' 와 매치된다.)

하이픈(-)을 이용해서 문자들의 범위를 나타낸다.
(ex. [a-z]는 아스키코드 상 a부터 z까지 알파벳을 나타낸다.)
(ex. [0-5][0-9]는 숫자 00부터 59까지의 두자리 숫자를 나타낸다.)
(ex. [a\-z] 또는 [-a], [a-]처럼 하이픈이 문자열의 처음과 끝에 있으면 하이픈 자체를 나타낸다.)

특수문자가 문자열 안에 존재하면 그 문자 자체를 나타낸다.
(ex. [(+*)]는 '(' 또는 '+' 또는 '*' 또는 ')'와 매치된다.)

문자열 맨 앞에 '^'이 붙으면 그 문자열을 제외한 모든 문자들과 매치된다.
(ex. [^0-9]는 숫자를 제외한 다른 모든 문자들과 매치된다.)

 

자주 사용되는 문자클래스
정규 표현식 문자 클래스 설명
[0-9] \d 숫자를 나타냄
[^0-9] \D 숫자가 아닌 문자들을 나타냄
[ \t\n\r\f\v] \s 공백(whitespace) 문자를 나타냄
[^ \t\n\r\f\v] \S 공백(whitespace) 문자가 아닌 것을 나타냄
[a-zA-Z0-9_] \w 숫자와 문자, 언더스코어를 나타냄
[^a-zA-Z0-9_] \W 숫자와 문자, 언더스코어가 아닌 것을 나타냄

 

2. "." (dot) : \n을 제외한 모든 문자와 매치된다.

>>> r = re.compile("a.b")

여기서 r은 "a" + \n을 제외한 모든문자 + "b" 형식으로 되어있는 모든 문자열과 매치된다.
'aab', 'a0b', 'a!b' 와는 매치되지만, 'abc'는 매치되지 않는다.

 

3. * : * 바로 앞 문자가 0번 이상 반복된다.

>>> r = re.compile("ca*t")

"ca*t"에서 a는 안쓰일 수도 있고 무수히 많이 반복될 수도 있다.
'ct', 'cat', 'caat', 'caaaaaaaat' ..... 등과 매치된다.

>>> r = re.compile("cap.*")

"cap.*"에서 *앞에 쓰인 문자가 . 이므로 cap에 0또는 하나 이상의 문자가 쓰인 문자열과 매치된다.
'cap', 'capture', 'captivate', capable' .... 등과 매치된다.

 

4. + : + 바로 앞 문자가 1번 이상 반복된다.

>>> r = re.compile("ca+t")

"ca+t"에서 +앞의 a는 1번 이상 반복되어야 한다.
'cat', 'caat', 'caaat' .... 등과 매치되지만, 'ct'는 매치되지 않는다.

>>> r = re.compile("[0-9]+")

"[0-9]+"에서 +앞에 쓰인 문자가 [0-9]이므로 숫자로만 되어있는 문자열과 매치된다.
'123', '01234', '092843' .... 등과 매치된다.

 

5. { } : 바로 앞 문자의 반복횟수를 지정한다.

>>> r = re.compile("ca{3}t")

"ca{3}t"에서  a가 3번 반복된 문자열만 매치된다.
'caaat' 는 매치되지만, 'cat', 'caat', 'caaaaat' .... 등과는 매치되지 않는다.

>>> r = re.compile("ca{2, 8}t")

"ca{2, 8}t"에서 a가 2번 이상 8번 이하로 반복된 문자열과 매치된다.
'caat', 'caaaaat' .... 등과 매치되지만, 'cat' .... 등과는 매치되지 않는다.

>>> r = re.compile("ca{3, }t")        # a가 3번 이상 반복되는 문자열과 매치
>>> r = re.compile("ca{ ,3}t")        # a가 3번 이하 반복되는 문자열과 매치

 

 

6. ? : 바로 앞 문자가 있어도 되고 없어도 된다.

>>> r = re.compile("ca?t")

"ca?t"에서 a가 0 또는 하나가 쓰인 문자열과 매치된다.
'ct', 'cat'와 매치된다.

728x90
반응형

'Programming Language > python' 카테고리의 다른 글

Python 자료구조  (0) 2020.09.22
Python 예외 처리  (0) 2020.09.10
Python Scikit-learn sklearn.model_selection API  (0) 2020.07.09
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기