Pytorch로 시작하는 딥러닝 입문(09-03. 정규 표현식)

2024. 3. 28. 20:27딥러닝 모델: 파이토치

텍스트 전처리에서 정규 표현식은 아주 유용한 도구이다. 파이썬에서 지원하는 정규 표현식 모듈 re의 사용방법과 NLTK를 통한 정규 표현식을 이용한 토큰화에 대해 알아보자. 

 

♣ 정규 표현식 문법과 모듈 함수

1. 정규 표현식 문법

 

정규 표현식을 위해 사용되는 문법 중 특수 문자들은 아래와 같다. 

 

정규 표현식 문법에는 역 슬래쉬(|)를 이용하여 자주 쓰이는 문자 규칙들이 있다. 

 

2. 정규 표현식 모듈 함수

정규 표현식 모듈에서 지원하는 함수는 아래와 같다. 

 

앞으로 진행될 실습에서는 re.compile( )에 정규 표현식을 컴파일하고, re.search( )를 통해서 해당 정규 표현식이 입력 텍스트와 매치되는지를 확인하면서 각 정규 표현식에 대해 이해한다. re.search( )는 매치된다면 Match Object를 리턴하고 매치되지 않으면 아무 값도 출력되지 않는다. 

 

 

♣ 정규 표현식 실습

1. . 기호

 

.은 한 개의 임의의 문자를 나타낸다. 예를 들어 정규 표현식이 a.c 일 때, a와 c 사이에는 어떤 문자라도 올 수 있다. akc, azc, avc, a5c, a!c와 같은 형태는 모두 a.c의 정규 표현식과 매치된다. 

 

.은 어떤 문자로도 인식될 수 있기 때문에 abc라는 문자열은 a.c라는 정규 표현식 패턴으로 매치된다. 

 

 

2. ? 기호

?는 ? 앞에 문자가 존재할 수도 있고, 존재하지 않을 수도 있는 경우를 나타낸다. 예를 들어 정규 표현식이 ab?c라고 할 때 이 경우 정규 표현식에서의 b는 있다고 취급할 수도 있고 없다고 취급할 수도 있다. 즉 abc와 ac 모두 매치할 수 있다. 

abbc에서는 어떤 결과도 출력하지 않는다. abc의 경우, b가 있는 것으로 판단하여 abc를 매치했다. ac의 경우, b가 없는 것으로 판단하여 ac를 매치했다. 

 

 

3. * 기호

* 은 바로 앞의 문자가 0개 이상일 경우를 나타낸다. 앞의 문자는 존재하지 않을 수도 있으며, 여러 개일 수도 있다. 정규 표현식이 ab*c라면 ac, abc, abbc, abbbc 등과 매치할 수 있으며 b의 개수는 무수히 많을 수 있다. 

 

 

4. + 기호

+ 는 *와 유사하다. 다른 점은 앞의 문자가 최소 1개 이상이어야 한다는 점이다. 정규 표현식이 ab+c 라고 하면 ac는 매치되지 않는다.

 

 

5. ^ 기호

^ 는 시작되는 문자열을 지정한다. 정규표현식이 ^ab라면 문자열 ab로 시작되는 경우에 매치한다. 

 

 

6. { 숫자 } 기호

문자에 해당 기호를 붙이면 해당 문자를 숫자만큼 반복한 것이 나타난다. 정규 표현식이 ab{2}c 라면 a와 c 사이에 b가 존재하면서 b가 2개는 문자열에 대해 매치한다.