[python] 정규 표현식 (regular expression)

정규 표현식 (regular expression)

텍스트 데이터를 전처리에서 아주 유용한 방식

1. 정규 표현식 문법과 함수

1) 문법

특수 문자

특수 문자 설명
. 한 개의 임의의 문자를 나타냅니다. (줄바꿈 문자인 \n 는 제외)
? 앞의 문자가 존재할 수도 있고, 존재하지 않을 수도 있습니다.(문자가 0개 또는 1개)
* 앞의 문자가 무한개로 존재할 수도 있고, 존재하지 않을 수도 있다.(문자가 0개이상)
+ 앞의 문자가 최소 한 개 이상 존재합니다.(문자가 1개 이상)
^ 뒤의 문자로 문자열이 시작됩니다.
$ 앞의 문자로 문자열이 끝납니다.
{숫자} 숫자만큼 반복합니다.
{숫자1,숫자2} 숫자 1 이상 숫자 2 이하 만큼 반복합니다. ?,*,+를 이것으로 대체가능
{숫자,} 숫자 이상만큼 반복합니다.
[] 대괄호 안의 문자들 중 한 개의 문자와 매치합니다. [amk]이면 a,m,k 중 하나라도 있으면 매치됨, [a-z]와 같이 범위 지정도 가능 [a-zA-Z]은 알파벳 전체를 의미, [0-9] 숫자도 가능
[^문자] 해당 문자를 제외한 문자를 매치합니다.
| A|B와 같이 쓰이며 A 또는 B 를 의미합니다.

\ 를 이용한 문자 규칙

문자 규칙 설명
\\ 역 슬래쉬 문자 자체를 의미합니다.
\d 모든 숫자를 의미합니다. [0-9]와 동일합니다.
\D 숫자를 제외한 모든 문자를 의미합니다. ^0-9 와 동일
\s 공백을 의미합니다. [\t\n\r\f\v]와 동일합니다.
\S 공백을 제외한 문자를 의미합니다. ^\t\n\r\f\v 와 동일
\w 문자 또는 숫자를 의미합니다.[a-zA-Z0-9] 와 동일
\W 문자 또는 숫자가 아닌 것을 의미

2) 정규표현식 모듈 함수

모듈 함수 설명
re.compile() 정규표현식을 컴파일하는 함수. 다시 말해 파이썬에게 표현식을 전달해주는 역할.찾고자 하는 패턴이 빈번한 경우 미리 컴파일 해놓고 사용하면 속도와 편의성 ↑
re.search() 문자열 전체에 대해서 정규표현식과 매치되는지를 검색합니다.
re.match() 문자열의 처음이 정규표현식과 매치되는지 검색합니다.
re.split() 정규 표현식을 기준으로 문자열을 분리하여 리스트로 반환합니다.
re.findall() 문자열에서 정규표현식과 매치되는 모든 경우의 문자열을 찾아서 리스트로 반환합니다. 만약 매치되는 문자열이 없다면 빈 리스트가 반환됩니다.
re.finditer() 문자열에서 정규표현식과 매치되는 모든 경우의 문자열에 대한 이터레이터 객체를 반환합니다.
re.sub() 문자열에서 정규표현식과 일치되는 부분에 대해서 다른 문자열로 대체합니다.