[파이썬] 정규 표현식 (regular expression)
정규 표현식 (regular expression)
텍스트 데이터를 전처리에서 아주 유용한 방식
- re 모듈
- nltk를 통한 정규표현식
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() | 문자열에서 정규표현식과 일치되는 부분에 대해서 다른 문자열로 대체합니다. |