본문 바로가기

IT 인터넷/정규표현식

[정규표현식] 수량자

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

이번시간에는 11page에 있는 Quantifiers에 대해서 알아보자. 


Quantifiers는 우리말로 '수량자'라는 뜻이며, 이는 어떠한 패턴이 얼만큼 등장하는가에 대한 것이다.

수량자는 크게 3가지가 있는데, 하나는 * 하나는 + 하나는 ?이며

각각 어떤 의미인지 알아보자. 


우선 *는 *앞에 등장하는 어떠한 패턴이 몇번 등장하는가에서, 0~여러개, *앞에 문자가 있을수도 있고 없을수도 있다는 뜻이다. 

예시를 통해 알아보자.


Source

aabc abc bc

Case 1

Regular Expression:a*b
First match:aabc abc bc
All matches:aababbc

정규표현식은 a*b이다. 이는 *앞에 있는 a가 있을수도 있고, 여러개일 수도 있는 패턴이다. 뒤에는 b가 온다. 

따라서 기준점은 b로 잡으면 편하다


b를 기준으로, a가 하나있거나, 여러개 있으면 된다. 

따라서 first-match는 aab 이며, all matches에는 aab, ab 그리고 b 앞에 없을 수도 있기 때문에 b가 선택될 수 있다.


이제 더하기+기호 에 대해서 알아보자. 더하기라는 것은 하나에서 여러개를 의미한다. 즉, 하나도 없는 것은 더하기에 해당되지 않는다. 

Case 2

Regular Expression:a+b
First match:aabc abc bc
All matches:aababc bc

a+b는 b앞에 a가 오는데, 반드시 a가 하나 이상이어야 한다는 것이다. 

따라서 아까 선택됐던 b는 선택 되지 않는다. 


마지막으로 물음표에 대해서 알아보자. 물음표는 없거나, 1개인 경우가 ?이다. 


Case 3

Regular Expression:a?b
First match:aabc abc bc
All matches:aababbc


따라서 a?b라면, b앞에 a가 없을 수도 있고 1개일 수도 있다. 따라서 ab,ab,b(없을수도 있기 떄문에) 가 선택된다.



이제 page 12를 살펴보자.


우리가 지금까지 보았던 선택 수량자를 다른 특수문자와 결합해서 알아보자.

예시를 보면, 


Source

-@- *** -- "*" -- *** -@-

Case 1

Regular Expression:.*
First match:-@- *** -- "*" -- *** -@-
All matches:-@- *** -- "*" -- *** -@-

정규표현식이 .*이다.  *은 앞에 어떤 문자가 없거나, 여러개 올 수 있다는 뜻이고, .은 모든문자를 의미한다. 

이는 모든텍스트를 의미한다. 


Case 2

Regular Expression:-A*-
First match:-@- *** -- "*" -- *** -@-
All matches:-@- *** -- "*" -- *** -@-

다음 정규표현식은 -A*-이다. 뒤에서부터보면 -앞에 A가 있을수도 있고 없을수도 있으며, 

그 앞에 -가 있다는 뜻이다. 


따라서 -앞에 A가 없으며 -가 그앞에 있는--가 선택된 것이다. 


Case 3

Regular Expression:[-@]*
First match:-@- *** -- "*" -- *** -@-
All matches:-@- *** -- "*" -- *** -@-


다음 정규표현식을 살펴보면, [-@]*이다. 우선 대괄호 부터 알아보자.

대괄호는 선택자 패턴의 후보군을 지정하는 것이고, 

[-@]라고 있다면 -나 @나 둘중에 하나가 오면 선택할 것이다.


다음으로 뒤에 *이 있다. *은 없을수도 있고, 여러개일 수도 있다는 뜻이다.

그래서 살펴보면 first-match 는 -@-이고, *은 앞에 여러개가 올 수 있기 때문에

-@-가 되는 것이다.

만약 [-@]였으면 값이 달라졌을까? 잘 모르겠따 테스트 페이지에 가서 first-match 보는거 있었음 좋겠다 ㅠ 



다음으로 넘어가서

page13을 살펴보자.


page13에는 +에 관해서 좀 더 알아보자. 앞서 배웠던 +는 하나에서 여러개를 의미한다. 

예시를 통해 살펴보자. 


Source

-@@@- * ** - - "*" -- * ** -@@@-

Case 1

Regular Expression:\*+
First match:-@@@- * ** - - "*" -- * ** -@@@-
All matches:-@@@- * ** - - "*" -- * ** -@@@-