이번시간에는 11page에 있는 Quantifiers에 대해서 알아보자.
Quantifiers는 우리말로 '수량자'라는 뜻이며, 이는 어떠한 패턴이 얼만큼 등장하는가에 대한 것이다.
수량자는 크게 3가지가 있는데, 하나는 * 하나는 + 하나는 ?이며
각각 어떤 의미인지 알아보자.
우선 *는 *앞에 등장하는 어떠한 패턴이 몇번 등장하는가에서, 0~여러개, *앞에 문자가 있을수도 있고 없을수도 있다는 뜻이다.
예시를 통해 알아보자.
Source
aabc abc bc |
Case 1
Regular Expression: | a*b |
---|---|
First match: | aabc abc bc |
All matches: | aabc abc bc |
정규표현식은 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: | aabc abc bc |
a+b는 b앞에 a가 오는데, 반드시 a가 하나 이상이어야 한다는 것이다.
따라서 아까 선택됐던 b는 선택 되지 않는다.
마지막으로 물음표에 대해서 알아보자. 물음표는 없거나, 1개인 경우가 ?이다.
Case 3
Regular Expression: | a?b |
---|---|
First match: | aabc abc bc |
All matches: | aabc abc bc |
따라서 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: | -@@@- * ** - - "*" -- * ** -@@@- |
'IT 인터넷 > 정규표현식' 카테고리의 다른 글
[정규표현식] 특정 문자와 범위 (0) | 2018.06.26 |
---|---|
[정규표현식] 특정 문자와 범위 (0) | 2018.06.26 |
[정규표현식] 모든 문자 그룹 (0) | 2018.06.20 |
[정규표현식] 위치와 이스케이핑 (0) | 2018.06.20 |
[정규표현식] 패턴 기본 (0) | 2018.06.20 |