구간 지정

Programming/RegEx 2013. 5. 12. 21:46 |


구간 지정하기

더하기, 별표, 물음표는 정규 표현식을 쓰면서 발생하는 많은 문제를 해결해 주지만, 충분하지 않을 때도 있다. 다음과 같은 상황을 생각해 보자.

# 더하기와 별표는 일치하는 문자 수에 제한이 없다. 문자가 최대 몇 개까지 일치하는지 정할 수 없다.

# 더하기, 별표, 물음표가 일치하는 문자 수의 최솟값을 0이나 1이다. 일치하는 문자 수의 최솟값을 명시적으로 정의할 수 없다.

# 정확히 원하는 만큼만 일치하도록 문자 수를 정의할 수 없다.


이런 문제들을 해결하고, 연속하는 문자를 찾을 때 검색 조건을 더 구체적으로 지정하고자 정규 표현식에서는 구간을 사용한다.

구간은 중괄호([]) 안에 표시한다.



정확한 구간 찾기

문자가 일치하는 수를 정확히 정하려면 여는 중괄호와 닫는 중괄호 사이에 숫자를 넣는다. 즉 {3} 은 바로 앞에 있는 문자나 문자 집합이 세 번 연속해서 일치하는지 확인한다. 만약 요소가 두 개만 있다면, 패턴이 일치하지 않는다.

RegEx: 

16진수 여섯개가 일치하는 것을 검색



범위 구간 찾기

일치시키려는 요소 수의 최솟값과 최댓값을 나타낼 때도 구간을 사용한다. 범위는  {2,4} 처럼 표현한다. 최소 두 번에서 초대 네 번까지 일치시킨다는 의미이다.

RegEx: 

이 예제에서 쓴 정규식은 슬래시(/) 문자를 \/ 로 이스케이프 하였다. 많은 정규식 구현에서는 이 작업이 필요 없지만, 어떤 정규 표현식 해석기에는 필요하다. 

따라서 상 슬래시(/) 를 이스케이프 하는 편이 좋다.


※ 구간은 0부터 시작하기도 한다. {0,3} 은 요소가 없는 경우나 요소가 한 번 또는 두 번이나 세 번 일치함을 의미한다.

물음표(?)는 물음표 앞에 주어진 요소가 없는 경우나 요소 한개와 일치한다. 즉, 물음표(?) 는 {0,1} 과 같은 기능을 한다.



최소 구간 찾기

예를 들어 {3,} 은 최소한 요소가 세 번 일치함을 의미한다. 

RegEx: 


※ 더하기(+) 는 {1,} 과 기능이 같다.


'Programming > RegEx' 카테고리의 다른 글

Greedy Quantifier & Lazy Quantifier  (0) 2013.05.12
반복 찾기(+, *) 와 '?' 메타 문자  (0) 2013.05.12
포직스(POSIX) 문자 클래스  (0) 2013.05.12
메타 문자 사용  (0) 2013.05.06
문자 집합으로 찾기  (0) 2013.05.06
Posted by scii
: