자연어 처리를 위한 정규식

정규식(regular expressions)은 프로그래밍 언어 내장된 문자열 처리를 위한 언어입니다. 패턴을 기반으로 문자열에 대한 검색, 삭제, 치환 기능을 수행할 수 있습니다. 예를 들어 이메일 주소, 전화번호, 우편번호 등과 같이 널리 사용되는 형식의 패턴을 추출 하거나 문자열 분리, 삭제, 치환 등의 텍스트 정제에 사용할 수 있습니다.

정규식 메타 문자열

메타 문자열은 정규식에서 문자열 매치 할 때 사용하는 문자열입니다. 다음과 같은 문자열이 있습니다.

. ^ $ * + ? { } [ ] \ | ( )

위에서 열거한 메타 문자는 정규식에서 특별한 의미가 있습니다.

메타 문자 예시 의미
. <?xml.*?> 아무 문자 하나와 일치
^ ^<?xml.*?> <?xml.*?> 문자열을 일치 하고, 문자열의 시작을 정확히 일치
$ <?xml.*?>$ 문자열을 일치 하고, 문자열 마지막을 정확히 일치
* [a-z]* 소문자(a-z)중 하나 이상 문자와 일치하거나 일치하는 문자가 없는 경우
+ [a-z]+ 소문자(a-z)중 하나 이상 문자와 일치
? ? 없거나 하나인 경우 일치
{ } [a-z]{1,5} 소문자의 최소 개수는 1개이고, 최대 개수는 5개 일치
[ ] [a-z] 소문자 a-z 중에서 하나의 문자와 일치
\ \ 문자 그대로 출력하라는 메타 문자
( ) (19|20)\d{2} 하위 표현식(19 또는 20으로 시작하는 숫자) 다음에 2자리 숫자가옴

마침표 .는 아무 문자 하나와 일치하는 메타 문자입니다. +는 문자 집합에 속하는 문자가 하나 이상인 경우에 사용합니다. 역슬래시 \ 는 문자 그대로 출력하는 메타 문자입니다.

공백 메타 문자

정규식 축약 패턴
\f 숫자(0-9)에 매칭합니다.
\n 줄바꿈
\r 캐리지 리턴
\t
\v 수직탭

공백 메타 문자

정규식 축약 패턴
\s 모든 공배 문자 [\f\n\r\t\v]
\S 공백 문자가 아닌 모든 문자 [^\f\n\r\t\v]

정규식 패턴

정규식 패턴 정규식 축약 패턴
[0-9] \d 숫자(0-9)에 매칭합니다.
[^0-9] \D 숫자가 아닌 문자열에 매칭합니다.
[ \t\n\r\f\v] \s 모든 공백 문자와 매칭합니다.
[^ \t\n\r\f\v] \S 공백이 아닌 문자열에 매칭합니다.
[a-zA-Z0-9_] \w 알파벳, 숫자, 언더바 문자열에 매칭합니다.
[^a-zA-Z0-9_] \W 알파벳, 숫자, 언더바 문자열가 아닌 문자열에 매칭합니다.

정규식 내장 메서드

위에서 정의한 정규식 매칭시 사용할 수 있는 파이썬 메서드는 다음과 같습니다.

Method/Attribute Purpose
match() 정규식을 문자열의 첫 문자부터 마지막 문자 까지 정확히 매칭되는지
search() 정규식에 매칭되는 문자열을 탐색
findall() 정규식에 매칭되는 모든 부분 문자열을 찾아 목록 형태로 반환함
finditer() 정규식에 매칭되는 모든 부분 문자열을 찾아 iterator로 반환함