HAN_PY 2020. 11. 23. 15:02
반응형

0. 들어가면서

 re은 파이썬 정규 표현식(Regular Expression)의 라이브러리다. 따라서 내장 라이브러리로 별다른 설치 없이 바로 사용 가능하다. re은 문자열을 쉽게 다룰 수 있기 때문에 문자열 데이터를 다루는 자연어 처리 분야에서 많이 사용된다. 당연하게도 전처리 과정에서 많이 사용한다.

 

아래의 블로그는 최소한의 간단한 예를 적은 것이다. 좀 더 자세한 설명과 많은 예제를 찾기 위해서는 아래의 정규식을 눌러보자.

 

정규식이란(Regular Expression),

 

 

1. 정규 표현식(Regular Expression)

re을 들어가기 전에 기본적으로 파이썬 정규 표현식에서 사용하는 문자나 기호에 대해 알아보자.

. 줄 바꿈을 제외한 모든 문자
^ 문자열의 시작
$ 문자열의 끝
* 앞에 있는 문자가 0회 이상 반복된 문자열
+ 앞에 있는 문자가 1회 이상 반복된 문자열
{m} 앞 문자를 m회 반복하는 문자열
{m, n} 앞 문자를 m~n회 반목하는 문자열
? 앞 문자가 나오거나 나오지 않는 문자열({0,1}과 동일)
\d 숫자
\D 숫자가 아닌 문자
\w 문자 혹은 숫자
\W 문자 혹은 숫자가 아닌 것
(...) 괄호 안의 모든 정규 표현식을 만족하는 문자
[abc] a, b, c 중 한 개의 문자와 일치

 

 

 

2. re 함수

이제 자연어 처리에 주로 사용되는 re라이브러리의 함수 위주로 알아보자. 일단 import를 하자.

import re

 

 

2.1. re.compile( pattern )

compile 함수는 특정 기호를 정규 표현식 객체로 만들어 준다. re 라이브러리를 사용하려면 정규 표현식 패턴을 매번 작성해야 하지만, compile을 사용하면 패턴을 필요할 때마다 사용할 수 있다.

pattern = '\W+'
re_pattern = re.compile(pattern)

 

 

2.2. re.search( pattern, string )

search 함수는 해당 문자열에서 정규 표현식에 해당하는 첫 부분을 찾는다.

re.search( "(\w+)", "wow, i love it!" )

----------------------------------------

<_sre.SRE_Match object; span=(0, 3), match='wow'>

"(\w+)"라는 패턴을 찾는 과정이다. 띄어쓰기가 나오기 전이고 문자인 'wow'가 결괏값으로 나오는 것을 알 수 있다.

 

 

 

2.3. re.split( pattern, string )

split 함수는 해당 문자열에서 특정 패턴으로 문자열을 나눠서 리스트로 만든다.

re.split('\W', 'wow, it is world of word')

-------------------------------------------

['wow', '', 'it', 'is', 'world', 'of', 'word']

'\W'란 문자나 숫자가 아닌 것을 의미하므로 공백을 기준으로 문장이 나눠진 것을 확인할 수 있다.

 

 

 

2.4 re.sub( pattern, repl, string )

sub 함수는 문자열(string)에서 특정 패턴(pattern)을 만족시키면 정의해둔 repl 값으로 치환된다.

re.sub("\d", "number", "7 candy")

----------------------------------

'number candy'

"\d"는 숫자를 의미하고 "7 candy"에 숫자가 포함되어 있기 때문에 7이 repl 값인 number로 변경이 된 것을 확인할 수 있다.

 

 

 

3. 마무리

사실, 모르고 코드를 보는 도중에 re을 처음 만나면 굉장히 어렵게 느껴진다. 하지만 가장 기본적인 것들을 이해하고 넘어가면 앞으로 코드를 볼 때 훨씬 수월할 것이라 확신한다.

반응형