-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
82 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
# 정리 | ||
|
||
> 정규표현식이란 텍스트를 찾고 조작하는데 쓰이는 `정규 표현 언어`로 이루어진 문자열이에요. | ||
> | ||
정규 표현 언어는 완전한 프로그래밍 언어는 아니고, 프로그래밍 언어에 포함된 작은 언어에요. 그렇기 때문에 정규 표현식이 구현되는 방법은 언어마다 달라요. | ||
|
||
## 표준 문법 | ||
|
||
주로 `패턴(pattern)`으로 부르는 정규 표현식은 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 표현식이이에요. 패턴에 맞는 문자열을 `일치(match)` 시켰다고 말해요. | ||
|
||
### POISX 기본 문법 | ||
|
||
| 메타문자 | 기능 | 설명 | | ||
|---|---|---| | ||
| . | 문자 | 1개의 문자와 일치시김. 단일행 모드에서는 CRLF를 제외함 | | ||
| [ ] | 문자 클래스 | "["과 "]" 사이의 문자 중 하나를 선택. "¦"를 여러 개 쓴 것과 같은 의미. 예를 들면 [abc]d는 ad, bd, cd를 뜻함. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있음. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미함. | | ||
| [^ ] | 부정 | 문자 클래스 안의 문자를 제외한 나머지를 선택. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미. | | ||
| ^ | 처음 | 문자열이나 행의 처음을 의미. | | ||
| $ | 끝 | 문자열이나 행의 끝을 의미. | | ||
| ( ) | 하위식 | 여러 식을 하나로 묶을 수 있음. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가짐. | | ||
| \n | 일치하는 n번째 패턴 | 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9 중 하나가 올 수 있음 | | ||
| '*' | 0회 이상 | 0개 이상의 문자를 포함. "a*b"는 "b", "ab", "aab", "aaab"를 포함. | | ||
| {m, n} | m회 이상 n회 이하 | "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않음. | | ||
|
||
<br> | ||
|
||
### POSIX 확장 문법 | ||
|
||
| 메타문자 | 기능 | 설명 | | ||
|---|---|---| | ||
| ? | 0 또는 1회 | "a?b"는 "b", "ab"를 포함. | | ||
| + | 1회 이상 | "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않음. | | ||
| ¦ | 선택 | 여러 식 중에서 하나를 선택. 예를 들어, "abc¦adc"는 abc와 adc 문자열을 모두 포함. | | ||
|
||
### POSIX 문자 클래스 | ||
|
||
메타 문자와 여러 문자 집합을 줄여 쓰는 방법이에요. | ||
|
||
전부는 아니지만 많은 정규 표현식에서 지원해요. (자바스크립트는 지원안함) | ||
|
||
`[:alnum:]`: 알파벳과 숫자 [A-Za-z0-9] | ||
|
||
`[:alpha:]`: 알파벳 [A-Za-z] | ||
|
||
`[:blank:]`: 탭과 공백 문자(space) | ||
|
||
`[:cntrl:]`: 제어 문자 | ||
|
||
`[:digit:]`: 숫자 [0-9] | ||
|
||
`[:graph:]`: 제어문자와 공백 문자를 제외한 문자 [:print:]와 동일하나, 빈칸 제외 | ||
|
||
`[:lower:]`: 소문자 [a-z] | ||
|
||
`[:upper:]`: 대문자 [A-Z] | ||
|
||
`[:print:]`: 제어문자를 제외한 문자, 즉 프린터 할 수 있는 문자 | ||
|
||
`[:punct:]`: [:graph:]문자 중 [:alnum:]을 제외한 문자. ex)!,@,#,$,%,^.... | ||
|
||
`[:space:]`: 화이트스페이스 ex)공백, 탭, 케리지 리턴, 새행, 수직탭, 폼필드 [\f\n\r\t\v ]와 같다 | ||
|
||
`[:xdigit:]`: 모든 16진수문자 | ||
|
||
<br> | ||
|
||
## Refer | ||
|
||
<br> | ||
|
||
# 질문 | ||
|
||
## 나만 알만한 것 | ||
|
||
### 질문 | ||
|
||
왜 언어마다 정규표현식의 지원 범위가 다를까? | ||
|
||
### 답변 | ||
|
||
언어에 포함된 작은 언어이기 때문 |