지극히 개인적인 공부 노트/파이썬(Python)

[Python] 정규표현식

AS J 2021. 5. 31. 03:30

정규표현식이란, 특정한 문자의 규칙을 찾고 가공하는 방법을 의미합니다. 파이썬뿐만 아니라 C, C++, 자바 등에서 표준 라이브러리로 제공하고 있다는 점에서 굉장히 널리 사용되는 표현법이기도 합니다.

 

1. 모듈

정규표현식 모듈의 이름은 're'입니다. 정규표현식의 메서드를 사용하기 전에 우선 정규표현식 모듈을 임포트해야 합니다.

import re

 

2. 메서드

1) match

- 해당 문자열의 가장 처음부터 원하는 패턴의 문자열을 찾는 명령입니다. 문자열을 찾은 후, group() 함수를 함께 사용해야 패턴에 해당되는 문자열이 반환됩니다.

- 사용법

re.match(패턴, 패턴을 찾을 문자열)

- 단, 가장 처음부터 원하는 패턴을 찾기 때문에 패턴이 문자열 중간에 있다면 찾지 못하고 오류가 발생합니다.

문자열 가장 처음의 패턴을 찾은 예시와 중간에서 찾은 예시

※ 문자열 앞에 r을 붙이는 이유는 r이 앞에 붙으면, r의 뒷부분은 모두 일반 문자로 인식하기 때문입니다. 간혹 파이썬에서는 역슬래시 다음에 오는 문자를 컴퓨터에 대한 명령어(이스케이프 문자)로 인식하는 경우도 있기 때문에, r을 붙이는 것이 좋습니다.

 

2) search

- match와 사용법은 동일하지만, match와 달리 문자열 중간에서도 패턴을 찾을 수 있습니다.

- 사용법

re.search(패턴, 패턴을 찾을 문자열)

 

3) findall

- 사용법은 위 match, search와 동일하지만, 특정 패턴을 문자열에서 모두 찾아서 리스트 형태로 반환한다는 점이 특징입니다.

- 사용법

re.findall(패턴, 패턴을 찾을 문자열)

 

4) split

- 특정 패턴이 등장할 때 문자열을 나누는 메서드로, 가장 쉽게는 마침표로 문장을 구분하는 예를 떠올릴 수 있습니다.

- 사용법

re.split(패턴, 패턴마다 나눌 문자열)

 

5) sub

- 문자열에서 문자를 대체하는 메서드입니다. 많은 칸을 차지하는 불필요한 줄바꿈 문자(\n)나 공백 등을 정리할 때 유용합니다.

- 사용법

re.sub(찾을 패턴, 대체할 문자, 패턴을 찾을 문자열)

 

3. 필수로 알아야 할 정규표현식

정규표현식 설명
/d 숫자와 매치, [0-9]와 동일.
/D 숫자가 아닌 것과 매치, [^0-9]와 동일.
/s whitespace 문자와 매치. [ \t\n\r\f\v]와 동일. 맨 앞의 빈칸은 공백(space)을 의미.
/S whitespace 문자가 아닌 것과 매치. [^ \t\n\r\f\v]와 동일.
/w 문자+숫자와 매치. [a-zA-Z0-9_]와 동일.
/W 문자+숫자가 아닌 문자와 매치. [^a-zA-Z0-9_]와 동일.
\\
또는
메타 문자가 아닌 일반 문자 역슬래시와 매치. 메타 문자 앞에 \를 붙이면 일반 문자를 의미.

 

4. 탐욕 제어: 마침표(.)와 물음표(?)

- 마침표는 모든 문자를 의미하기 때문에 반복하면 모든 문자를 집어삼키는 탐욕스러운(greedy) 특성이 있습니다. 이를 방지하기 위해 물음표를 집어넣습니다. 아래 예시에서는 물음표를 통해 어떤 문자든 뒤에 '년'이 처음 나오는 순간 끊어서, 값을 리스트에 넣습니다.