제목만 보고서는 ‘뭔 소리여?’ 하실 것 같습니다. 역시 백문이 불여일견, 백견이 불여일타죠? 직접 쳐보겠습니다.

echo

위 텍스트를 대상으로 다음과 같은 정규식을 적용하면 어떤 결과가 나올까요?

[e].+[h]

이제 이런 정도는 너무 쉽나요? e 다음에 아무 글자나 한 글자 이상이 오고 그 다음에 h가 오면 되니 ech가 매치되겠지요.

그런데  문자열이 다음과 같으면요?

echo echo echo

이렇게 찾아야 할까요? echo echo echo. 즉 ech라는 문자열 3개를 찾는 게 맞을까요? 가령 울트라 에디트에서 찾는다면 처음 찾을 때 맨 앞의 echo echo echo를 찾고 이어서 다음 찾기를 하면 echo echo echo, 또 다음 찾기를 하면 echo echo echo 하는 식으로 찾을까요?

아니면 앞에서부터 끝까지 죽 붙여서 echo echo echo처럼 찾는 게 맞을까요? 이것도 위의 정규식과는 일치하거든요. e로 시작해서 아무 글자나 한 글자 이상 계속되다가 h로 끝나기만 하면 되니까요.

이 경우 후자처럼 찾게 됩니다. 이는 최대 매치에 해당합니다. 그리고 이게 디폴트입니다. 왜냐구요? 그거야 엿장수 맘이죠. 즉, 정규식을 설계한 사람이 이렇게 해놨거든요. 대개는 사람들이 이렇게 찾을 것이라고 본 것이지요.

최대 매치를 다른 말로 탐욕적(또는 탐욕스러운, greedy) 매치라고도 합니다. 실은 이게 정식 용어입니다. 문제는 전자처럼 찾고자 할 경우입니다. 즉 최소 매치입니다. 이에 대한 정식 용어는 게으른(lazy) 또는 욕심없는(non-greedy) 매치입니다. 이렇게 찾고자 할 때는 해당 메타문자 뒤에 물음표를 붙이면 됩니다.

단독으로 쓰이는 메타문자 물음표와 혼동하시면 안 됩니다. 최소 매치의 물음표는 다른 메타문자, 정확하게는 + * {n,}라는 세 개의 메타문자 뒤에 각각 붙여서 사용합니다. 이들 세 개의 메타문자는 수량자(quantifier)라고도 부릅니다. 글자의 개수에 관한 메타문자이기 때문입니다.

아무튼 위의 문자열에서 각 단어마다 따로 찾으려면, 즉 최소 매치를 적용하려면 다음과 같이 됩니다.

[e].+?[h]
List of Articles
번호 제목 글쓴이 날짜 조회 수
29 정규표현식 029. 자바스크립트의 정규식 5 마라톤맨 2012-03-28 15488
28 정규표현식 028. 자바스크립트의 정규식 4 마라톤맨 2012-03-09 9131
27 정규표현식 027. 자바스크립트의 정규식 3 마라톤맨 2012-03-02 9324
26 정규표현식 026. 자바스크립트의 정규식 2 마라톤맨 2012-02-27 11045
25 정규표현식 025. 자바스크립트의 정규식 1 마라톤맨 2012-02-22 31646
24 정규표현식 024. 숙제와 답 마라톤맨 2012-02-17 10068
23 정규표현식 023. 정규식의 옵션과 여러 정규식 엔진들 마라톤맨 2012-02-15 68171
22 정규표현식 022. 드라이브명과 디렉토리, 파일명 분리 2 마라톤맨 2012-02-13 23601
21 정규표현식 021. 드라이브명과 디렉토리, 파일명 분리 1 마라톤맨 2012-02-08 13533
20 정규표현식 020. IP 주소 유효성 검사 2 마라톤맨 2012-02-06 10755
19 정규표현식 019. IP 주소 유효성 검사 1 마라톤맨 2012-02-02 98007
18 정규표현식 018. 하위 표현식 3 마라톤맨 2012-01-30 10005
17 정규표현식 017. 하위 표현식 2 마라톤맨 2012-01-27 8334
16 정규표현식 016. 하위 표현식 1 마라톤맨 2012-01-25 10208
15 정규표현식 015. 최대 매치와 최소 매치 2 마라톤맨 2012-01-20 9097
» 정규표현식 014. 최대 매치와 최소 매치 1 마라톤맨 2012-01-18 12516
13 정규표현식 013. 검색할 위치 2 마라톤맨 2012-01-16 8969
12 정규표현식 012. 검색할 위치 1 마라톤맨 2012-01-13 9416
11 정규표현식 011. 검색 문자 개수 지정하기 머니북 2012-01-12 21313
10 정규표현식 010. 웹 서버 설정에도 필요 머니북 2012-01-11 13305