[NLP] 정규식
의미(위키백과 정리 + 책)
정규 표현식(regular expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 주로 문자열 검색 및 취환에 쓰인다.
검색 엔진, 워드 프로세서와 문자 편집기의 찾아 바꾸기 대화상자, 리눅스의 grep, awk와 같은 문자 처리 유틸리티, 어휘분석에 사용된다.
문법
- 기본 및 확장 표준 문법
| 문자 | 기능 | 설명 |
|---|---|---|
| . | 문자 | 1개의 문자 일치 |
| [ ] | 분리 | 괄호 안 사이의 문자 중 하나 선택 |
| [^] | 부정 | 괄호 안에 쓰이며, “^” 다음 문자 제외 |
| ^ | 처음 | 문자열이나 행의 처음 |
| $ | 끝 | 문자열이나 행의 끝 |
| ( ) | 하위식 | 여러 식을 하나로 묶음 |
| \n | 일치하는 n번째 패턴 | 일치하는 패턴들 중 n번째 선택 |
| * | 0회 이상 | “*” 다음에 오는 문자가 0개 이상 포함 |
| ? | 0 또는 1회 | ”?” 다음에 오는 문자 0개 또는 1개 포함 |
| + | 1회 이상 | ”+” 다음에 오는 문자 1회 이상 포함 |
| {n} | n회 | 문자 n회 포함 |
| {min,} | min회 이상 | 문자 min회 이상 포함 |
| {min, max} | min회 이상 max회 이하 | 문자 min회 이상 max회 이하 포함 |
| | | 선택 | 여러 식 중에서 하나 선택 |
- 범위 문법
| 정규식 | 범위 | 설명 |
|---|---|---|
| [a-z] | 소문자 | |
| [A-Z] | 대문자 | |
| \d | [0-9] | 숫자 |
| \D | [^0-9] | 숫자가 아닌 문자 |
| \w | [a-zA-Z0-9_] | 알파벳, 숫자, 언더바 |
| \W | [^\w] | 알파벳, 숫자, 언더바가 아닌 문자 |
| \s | [ \r\t\n\f] | 공백 문자 |
| \S | [ ^\s] | 공백이 아닌 문자 |
정리 및 다음 문서
간단하게, 정규식의 의미와 문법을 정리했다. 다음 챕터에서는 finite-state automaton를 통해 어떻게 정규식이 실행되는지 보려고 한다.