Skip to content

Commit

Permalink
feat: PK java q7 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
pkeugine authored Oct 26, 2021
1 parent 500c69d commit 4214d61
Showing 1 changed file with 88 additions and 0 deletions.
88 changes: 88 additions & 0 deletions java/q7-정규표현식에 대해 설명해주세요/pk.md
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

0 comments on commit 4214d61

Please sign in to comment.