-
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
1 changed file
with
88 additions
and
0 deletions.
There are no files selected for viewing
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,88 @@ | ||
|
||
# 정규 표현식 | ||
<img width="757" alt="Screen Shot 2021-10-27 at 2 31 46 AM" src="https://user-images.githubusercontent.com/48251668/138930737-242f5f39-7a63-4269-b68f-19dab3efb4e8.png"> | ||
|
||
* 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. | ||
* 다양한 텍트트 처리 작업에 유용하고 파싱이나 데이터 검증과 같은 작업에 응용된다. | ||
* 복잡도와 설계에 따라 컴퓨터 자원을 과하게 소비할 수 있다. | ||
|
||
## 기본 개념 | ||
|
||
주로 **패턴**으로 부르는 정규 표현식은 특정 목적을 위해 필요한 문자열 집합을 지정하기 위해 쓰이는 식이다. 패턴과 맞는 문자열은 **"일치"** 한다고 한다. | ||
|
||
### Boolean "or" | ||
``` | ||
gray|grey | ||
``` | ||
위의 정규 표현식은 "gray" 또는 "grey" 와 일치한다. | ||
|
||
### Grouping | ||
괄호를 사용하여 연산자의 범위와 우선권을 정할 수 있다. | ||
``` | ||
g(ra|e)y | ||
``` | ||
위의 정규 표현식은 "gray" 또는 "gey" 와 일치한다. | ||
|
||
### Quantification (양의 지정) | ||
|
||
#### ? | ||
물음표는 0 또는 1 번 발생하는 것을 의미한다. | ||
``` | ||
colou?r | ||
``` | ||
위의 정규표현식은 "color" 또는 "colour" 와 일치한다. | ||
|
||
#### * | ||
별표는 0번 이상 발생하는 것을 의미한다. | ||
``` | ||
ab*c | ||
``` | ||
위의 정규표현식은 "ac", "abc", "abbc", "abbbbbbbbbbbbc" 등과 일치한다. | ||
|
||
#### + | ||
플러스 표시는 1번 이상 발생하는 것을 의미한다. | ||
``` | ||
ab+c | ||
``` | ||
위의 정규표현식은 "abc", "abbc", "abbbbbbbbbbbbc" 등과 일치한다. "ac" 와는 일치하지 않는다. | ||
|
||
#### {n} | ||
앞에 오는 문자가 n번 발생하는 것을 의미한다. | ||
``` | ||
ab{3}c | ||
``` | ||
위의 정규표현식은 "abbbc" 와 일치한다. | ||
|
||
#### {min,}, {,max} | ||
최소, 또는 최대 얼만큼 발생하는지를 표현하는 방식이다. | ||
``` | ||
ab{1,}c | ||
ab{,5}c | ||
``` | ||
위의 정규표현식은 순서대로 `b가 최소 1번 발생`, `b가 최대 5번 발생` 이라는 뜻이다. | ||
|
||
#### {min, max} | ||
위에서 설명한 최소, 최대 기준을 동시에 적용한 문법이다. | ||
|
||
### 예시 | ||
위에 적은 것들 외에도 정말 많은 패턴이 존재한다. 그리고 그런 패턴들을 모아 다음과 같은 정규표현식을 만들 수 있다: | ||
|
||
#### 이메일 | ||
``` | ||
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i | ||
``` | ||
|
||
#### 전화번호 | ||
``` | ||
/^\d{3}-\d{3,4}-\d{4}$/ | ||
``` | ||
|
||
#### URL | ||
``` | ||
/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/ | ||
``` | ||
|
||
|
||
##### 출처 | ||
* [위키피디아](https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D) | ||
* https://hamait.tistory.com/342 |