이번에는 정규표현식에서 자신이 원하는 문자의 후보군을 지정하는 방법에 대해서 알아보자.
여기서는 대괄호 [](Square brackets]가 사용된다.
page7을 보면
Source
How do you do? |
소스는 how do you do?이다.
정규표현식으로 [oyu] 라고 입력하면 소스중에 o나 y나 u중에 하나 해당되는 문자를 찾게된다.
Case 1
Regular Expression: | [oyu] |
---|---|
First match: | How do you do? |
All matches: | How do you do? |
이처럼 first-match는 o를 사용되고, all matches는 모든 o,y,u를 찾게된느 것이다.
한가지 알아둘 것은 대괄호 포함 [oyu]는 문자 하나에 해당되는 것이다.
따라서
Case 2
Regular Expression: | [dH]. |
---|---|
First match: | How do you do? |
All matches: | How do you do? |
이렇게 정규표현식을 적는다면, [dH]가 문자 하나, .이 문자 하나가 될 것이다.
먼저 d나 H를 찾고, 뒤에 .이 있기 때문에 뒤에 있는 글자 하나를 더 선택하는 것이다.
Case 3
Regular Expression: | [owy][yow] |
---|---|
First match: | How do you do? |
All matches: | How do you do? |
여기서는 o나 w나 y 에 해당하는 문자 하나와, 그 뒤에 y나 o나 w가 포함돼있는 문자 하나를 찾아서
2개의 문자를 찾게되는 것이다.
do는 두번째 문자 o는 [yow]안에 포함되지만, 첫번째 문자 d가 [owy]에 포함되지 않기 때문에 선택되지 않는 것이다.
그런데 문자를 지정하다보면, 대괄호 안에다가 [abc]라고 할수도 있겠지만, 문자가 많아지면 굉장히 번거로울 것이다
이때 사용하는 것이 range 이며 기호는 -(dash기호) 이다.
page8에서 구체적으로 배울 수 있다.
Source
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
소스는 다음과 같다.
Case 1
Regular Expression: | [C-K] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
정규표현식으로 [C-K]라고 입력하면, C부터 K까지 선택이 되는 것이다.
따라서 FIRST MATCH는 C이고, ALL은 CDEFGHIJK가 선택되는 것이다.
Case 2
Regular Expression: | [CDEFGHIJK] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
CASE2와 CASE1은 정확히 일치한다.
Case 3
Regular Expression: | [a-d] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
정규표현식을 바꿔 [a-d]라고 적어보자. 이 또한 a부터 d까지의 문자를 선택한다. 순서는 바뀌면 안된다.
숫자도 마찬가지다
Case 4
Regular Expression: | [2-6] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
숫자도 2부터 6까지를 선택한다.
Case 5
Regular Expression: | [C-Ka-d2-6] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
case5에서는 정규표현식이 [C-Ka-d2-6]이다
이는 C부터 K까지 문자, a부터 d까지 문자, 2-6까지의 문자를 선택하라는 것이다.
이걸 보면 -를 사이에 둔 애들은 하나이다.
결과도 역시 CDEFGHIJK 와 abcd 와 23456이 선택됐다.
page9로 넘어가보자.
이번엔 캐럿(^)의 다른 의미에 대해서 알아보자
앞에서 배웠던 캐럿은 ^ABC라하면 시작점에 있는 ABC를 의미하는 것이었다.
하지만 이 캐럿을 대괄호 안에서 사용하면 NOT의 의미가 된다.
Source
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
소스는 동일하다.
Case 1
Regular Expression: | [^CDghi45] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789 |
따라서 정규표현식으로 [^CDghi45]라고 할 때, C나 D나 g나 h나 i나 4나 5를 제외한 것이기 때문에, first-match는 A가 선택되고
all matches에서는 이를 제외한 모든 문자가 선택되는 것이다.
Case 2
Regular Expression: | [^W-Z] |
---|---|
First match: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
All matches: | ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 |
두번째에서는, [^W-Z]이므로, W부터 Z까지를 제외한 문자를 선택한다는 뜻이다.
즉 WXYZ를 제외한 문자를 선택한다.
따라서 first-match는 이에 포함 안되는 A가 선택되고
all matches에서는 WXYZ를 제외한 모든 문자가 선택되는 것이다.
'IT 인터넷 > 정규표현식' 카테고리의 다른 글
[정규표현식] 수량자 (0) | 2018.06.26 |
---|---|
[정규표현식] 특정 문자와 범위 (0) | 2018.06.26 |
[정규표현식] 모든 문자 그룹 (0) | 2018.06.20 |
[정규표현식] 위치와 이스케이핑 (0) | 2018.06.20 |
[정규표현식] 패턴 기본 (0) | 2018.06.20 |