원문은 ZVON의 Regular Expressions Tutorial을 참조하면됨
특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음 |
||||||
Source |
||||||
|
||||||
중괄호{ }안에 횟수를 지정하는 수량자에 대한 사용 예시 |
||||||
Test Case |
||||||
Case 1
|
||||||
중괄호{ }안에 횟수를 지정하면, 반복되는 횟수를 명확하게 지정할 수 있음 .{5}의 경우 임의의 문자가 5번반복되는것을의미. 즉 문자를 5개씩 추출 |
||||||
Case 2
|
||||||
중괄호{ }안에 횟수를 가변적으로 지정가능. 수량자{1,3}은 1~3회 반복됨을의미. 즉, e 또는l 또는s 문자로 구성되는 1~3자리 문자 추출 |
||||||
Case 3
|
||||||
{3, }은 3회이상 반복을의미. 즉, 영소문자로 구성된 3자리 이상의 문자들을 추출 |
특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음 |
||||||
Source |
||||||
|
||||||
수량자 * , + , ?와 중괄호{ }안에 횟수를 지정하는 수량자에 대한 사용 예시 |
||||||
Test Case |
||||||
Case 1
|
||||||
수량자*는 0~n까지를 의미하므로 대문자 A와 A사이에 B가 0~n번 반복되는 것을 의미. |
||||||
Case 2
|
||||||
수량자 * 는 0~n까지를 의미하므로 {0,}로 표현할 수 있음 대문자 A와 A사이에 B가 0~n번 반복되는 것을 의미. |
||||||
Case 3
|
||||||
수량자+는 1~n까지를 의미하므로 대문자 A와 A사이에 B가 1~n번 반복되는 것을 의미. |
||||||
Case 4
|
||||||
수량자 + 는 1~n까지를 의미하므로 {1,}로 표현할 수 있음 대문자 A와 A사이에 B가 0~n번 반복되는 것을 의미. |
||||||
Case 5
|
||||||
수량자?는 0또는 1회를 의미하므로 대문자 A와 A사이에 B가 1~n번 반복되는 것을 의미. |
||||||
Case 6
|
||||||
수량자 + 는 0 또는 1회를 의미하므로 {0,1}로 표현할 수 있음 대문자 A와 A사이에 B가 0또는 1번 반복되는 것을 의미. |
우선 간단히 수량자에 대한 정리를 다시하고…
* |
앞의 문자나 부분식2이 0개 이상 탐욕적으로 찾기 |
+ |
앞의 문자나 부분식을 하나 이상 탐욕적으로 찾기 |
? |
앞의 문자나 부분식을 0개나 1개 찾기 |
{n} |
앞의 문자나 부분식이 정확히 n번 일치하는 경우 찾기 |
{m,n} |
앞의 문자나 부분식이 m번에서 n번 일치하는 경우 찾기 |
{n,} |
앞의 문자나 부분식이 n번 이상인 경우를 탐욕적으로 찾기 |
*? |
탐욕적 수량자 *를 게으른(lazy) 수량자로 바꿔 찾기 |
+? |
탐욕적 수량자 +를 게으른(lazy) 수량자로 바꿔 찾기 |
{n,}? |
탐욕적 수량자 {n,}를 게으른(lazy) 수량자로 바꿔 찾기 |
※ 수량자 ?가 검색할 패턴 뒤에 오는 경우에는 0 또는 1 개라는 의미로 사용 되지만 다른 수량자인 *, +, ?, {} 뒤에 오는 경우에는 탐욕적 수량자를 게으른 수량자로 바꾸라는 의미로 *, +, ?, {}수량자 와 ?수량자가 붙어서 나오는 경우 앞에오는 *, +, ?, {} 수량자의 가장 작을값을 의미한다고 생각하면 됨
탐욕적 수량자 와 게으른 수량자에 대해서
개념을 정리해보면(이 부분은 처음 개념잡기가 어렵지만 매우 중요한 부분임)해야 하는데, 탐욕적 수량자는 조건에 맞지 않을 때까지 하나로 인식하는 것이고, 게으른 수량자의 핵심은 조건에 맞으면 거기서 끝내는 것이다.
이해가 쉽도록 예를 들어보면,
라는 문장을 검색한다고 했을 때 검색패턴을 <div>.*</div> 로 지정하면 (탐욕적 수량자)
가 선택되고 검색 패턴을 <div>.*?</div> 로 지정하면(게으른 수량자)
이 선택되어 진다. |
탐욕적 수량자는 </div>를 검색 대상 문장의 끝 에서부터 역으로 찾고, 게으른 수량자는 </div>를 검색대상 문장의 앞에서부터 찾는다고 이해하면 쉬움
특정 패턴이 반복해서 등장하는 횟수를 지정할 수 있음 |
||||||
Source |
||||||
|
||||||
수량자 * , + , ?와 탐욕적인 수량자와 게으른 수량자에 대해서… * 와 + 수량자 뒤에 ?수량자가 오면 *는 0회 +는 1회를 의미 하게되며 |
||||||
Test Case |
||||||
Case 1
|
||||||
r.*은 r뒤에 . (임의의 문자)가 *(0~n번) 나타날 수 있음. 즉 r로 시작되는 문자열을 의미 |
||||||
Case 2
|
||||||
r.*?은 r뒤에 . (임의의 문자)가 *? (0번) 나타남. 즉 문자 r 을 의미(게으른 수량자) |
||||||
Case 3
|
||||||
r.+은 r뒤에 . (임의의 문자)가 +(1~n번) 나타날 수 있음. 즉 r로 시작되는 2자리이상 문자열을 의미 |
||||||
Case 4
|
||||||
r.+?은 r뒤에 . (임의의 문자)가 +? (1번) 나타남. 즉 문자 r로 시작되는 2자리 문자열을 의미(게으른 수량자) |
||||||
Case 5
|
||||||
r.?은 r뒤에 . (임의의 문자)가 ?(0 또는 1 번) 나타날 수 있음. 즉 문자 r 또는 r로 시작되는 2자리 문자열을 의미 |
||||||
Case 6
|
||||||
r.??은 r뒤에 . (임의의 문자)가 .? (0번) 나타남. 즉 문자 r 을 의미(게으른 수량자) |
'소프트웨어 > 개발관련' 카테고리의 다른 글
정규 표현식을 배워보자 #08 위치지정과 패턴 (0) | 2019.01.18 |
---|---|
정규 표현식을 배워보자 #07 캐릭터 클래스 (0) | 2019.01.17 |
정규 표현식을 배워보자 #05 수량자 #1 (0) | 2019.01.16 |
정규 표현식을 배워보자 #04 특정 문자와 서브패턴 (0) | 2019.01.16 |
정규 표현식을 배워보자 #03 이스케이핑 과 문자그룹 (0) | 2019.01.16 |