정규 표현식[Page 11 ~ 12]
- IT 정보/정규 표현식
- 2017. 1. 11.
※ 본 자료는 '생활코딩' 이고잉님의 정규표현식 강의를 듣고 정리한 자료 입니다.
이고잉님의 동영상 강의 : https://opentutorials.org/course/909/5143
### Page 11 ###
Page 11은 Quantifiers에 대한 내용입니다. Quantifiers는 우리말로 수량자 입니다.
수량자는 어떠한 패턴이 얼만큼 나타나는가를 나타내는 숫자를 뜻합니다.
수량자에는 크게 세가지가 있는데 * + ? 이 세가지 입니다.
첫번째 수량자로 *는 *앞에 어떤 문자가 몇번 등장하는가에 대한 것인데,
0 ~ 무한대의 범위를 갖습니다.
case 1을 보면 a*b라고 되어 있는데 이 뜻은
b 앞에 a가 없거나 한개 있거나, 여러개 있거나를 뜻하게 됩니다.
따라서 b에 초점을 맞추시고 보시는게 더 편하실듯 합니다.
두번째 수량자로 + 는 역시 +앞에 어떤 문자가 몇번 등장하는가에 대한 것인데,
*와 다른점은 +는 가장 작은 범위가 0이 아닌 1이라는 것입니다.
따라서 case 2처럼 a+b는 b 앞에 a가 한개 있거나 여러개 있거나를 뜻하게 됩니다.
마지막 수량자로 ? 는 ?앞에 문자가 없거나 한개 있거나를 뜻합니다.
case 3의 경우 처럼 a?b는 b 앞에 a가 한개 있거나 아예 없거나를 검출하게 됩니다.
### Page 12 ###
page 12에서는 위의 수량자를 문자뿐만 아니라 다른 기호들과 함께 사용하는 방법에 대한 내용입니다.
앞서 살펴본 * 는 *앞에 어떤 문자가 없거나 있거나 여러개 있거나를 뜻합니다.
case 1의 경우 .* 라고 되어있는데 이는 .이 뜻하는 공백을 포함한 어떠한 문자가
없거나 있거나 여러개 있다는 것입니다. 따라서 이는 소스의 전체를 검출하게 됩니다.
여기서 . 하나만 썼을 때와 다른점은 . 하나만 썼을때 First match에서는 한 단어만을 검출하지만
.* 을 쓰게 되면 First match에서도 모든 단어를 검출하게 됩니다.
case 2 의 경우를 살펴보면 -A*- 라고 되어 있습니다.
이가 뜻하는것은 앞뒤의 - 사이에 A가 있거나 한개있거나 여러개 있는 것을 검출하는 것입니다.
따라서 -- 만 매치된것을 확인할 수 있습니다.
마지막 case 3를 보면 [-@]*라고 되어있습니다.
[ ] 대괄호는 - 나 @가 포함되어 있는 문자를 매치하는 것으로
이 대괄호가 * 앞에 있으므로 [ ] 안의 패턴이 없거나 있거나 여러개이거나 하는 패턴을 매치하게 됩니다.
따라서 위의 case 3 와 같이 매치되게 됩니다.