본문 바로가기

IT 인터넷/정규표현식

[정규표현식] 특정 문자와 범위

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이번에는 정규표현식에서 자신이 원하는 문자의 후보군을 지정하는 방법에 대해서 알아보자.

여기서는 대괄호 [](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:Hodo 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를 제외한 모든 문자가 선택되는 것이다.