번호 | 정규식 | 설명 |
---|---|---|
1 |
c[a-z]* |
c로 시작하는 영단어 |
2 |
c[a-z] |
c로 시작하는 두 자리 영단어 |
3 |
c[a-zA-Z] |
c로 시작하는 두 자리 영단어
(a~z 또는 A~Z, 즉 대소문자 구분안함) |
4 |
c[a-zA-Z0-9] |
c로 시작하고 숫자와 영어로 조합된 두 글자 |
5 |
.* |
모든 문자열 |
6 |
c. |
c로 시작하는 두 자리 |
7 |
c.* |
c로 시작하는 모든 문자열(기호포함) |
8 |
c\. |
c.와 일치하는 문자열 '.'은 정규식표현에 사용되는 문자이므로 escape문자인 '\'를 사용해야한다. |
9 |
c\d |
c와 숫자로 구성된 두 자리 문자열 |
10 |
c.*t |
c로 시작하고 t로 끝나는 모든 문자열 |
11 |
[b|c].* |
b 또는 c로 시작하는 문자열 |
12 |
[^b|c].* |
b 또는 c로 시작하지 않는 문자열
|
13 |
.*a.* |
a를 포함하는 모든 문자열 |
14 |
[b|c].{2} |
b 또는 c로 시작하는 세 자리 문자열. (b 또는 c 다음에 두 자리이므로 모두 세 자리) |
15 |
.*&Gotopage=1$ |
'&Gotopage=1'로 끝나는 문자열. |
16 |
.*(0:36:41|65.54.188.79).* |
'0:36:41' 또는 '65.54.188.79' 를 포함하는 문자열 |
- 정규식은 유효성을 검사하는데 자주 사용합니다. 아래는 IP의 유효성 검사에 사용하는 정규식입니다.
(([2][5][0-5]|[2][0-4][0-9]|[0-1][0-9][0-9]|[0-9][0-9]|[0-9])\\.){3} ([2][5][0-5]|[2][0-4][0-9]|[0-1][0-9][0-9]|[0-9][0-9]|[0-9])
- 위의 정규식이 어떻게 IP 유효성을 검사는데 사용되는지 확인해 볼까요?
- 위 정규식은 다시 이렇게 쓸 수 있습니다.
1. A = ([2][5][0-5]|[2][0-4][0-9]|[0-1][0-9][0-9]|[0-9][0-9]|[0-9]) 2. (A\\.){3}A
- 우선 IP가 어떤 규칙을 갖고 있는지 생각해 보죠.
- IP는 "???.???.???.???" 이런 형태로 되어 있죠.
- "."을 기준으로 4구역으로 나눌 수 있습니다.
- 각구역은 0~255까지의 숫자만 입력할 수 있습니다.
- 각 자리가 어떤 의미가 있는지는 네트워크관련 서적을 참고해 보시구요:)
- 좀 간단해 보이는 2번 부터 시작하죠
- (A\\.){3}A
- "A."문자열이 3자리 반복되고 "A"문자열로 끝나야 한다는 의미 입니다.
- A.A.A.A 와 같은 의미죠.
- 표의 8번, 14번을 참고하면 금방 이해 하실 수 있습니다.
- 1번은 무지하게 길지만 별거 아닙니다.
- 파이프구분자가"|" 있습니다. 우선 파이프구분자는 "또는" 이라는 의미죠.
- 파이프로 문자들을 나누어 보면
- [2][5][0-5]
- [2][0-4][0-9]
- [0-1][0-9][0-9]
- [0-9][0-9]
- [0-9]
- 대괄호"["는 문자열 1자리를 말합니다. 그러니까
- [2][5][0-5]: 3자리 문자열
- [2][0-4][0-9]: 3자리 문자열
- [0-1][0-9][0-9]: 3자리 문자열
- [0-9][0-9]: 2자리 문자열
- [0-9]: 1자리 문자열
- 괄호 안의 숫자는 범위를 나타내죠.
- [2][5][0-5]: 250-255까지의 숫자로만 구성된 문자열
- [2][0-4][0-9]: 200-249까지의 숫자로만 구성된 문자열
- [0-1][0-9][0-9]: 000-199까지의 숫자로만 구성된 문자열
- [0-9][0-9]: 00-99까지의 숫자로만 구성된 문자열
- [0-9]: 0-9까지의 숫자로만 구성된 문자열
- 이제 2개를 합쳐보면 되겠죠.
- "(250-255 또는 200-249 또는 000-199 또는 00-99 또는 0-9)."이 3번 반복
- "(250-255 또는 200-249 또는 000-199 또는 00-99 또는 0-9)"으로 끝나야 함.