Share via


JScript의 역참조

역참조는 문자의 반복 그룹을 찾는 데 사용됩니다. 또한 입력 문자열에서 요소의 순서 및 배치를 조정하여 입력 문자열의 형식을 다시 지정하는 데도 사용됩니다.

하위 식은 정규식 및 대체 문자열 내에서 참조할 수 있습니다. 각 하위 식은 번호로 식별되며 역참조라고 합니다.

괄호는 하위 식을 만들기 위해 정규식에서 사용됩니다. 이에 따른 부분 일치는 프로그램에 의해 검색될 수 있습니다. 자세한 내용은 교체 및 부분식을 참조하십시오.

역참조 사용

하위 식은 정규식 내에서 참조할 수 있습니다.

정규식에서 저장된 각 부분 일치는 왼쪽으로 오른쪽으로 발견된 순서대로 저장됩니다. 부분 일치가 저장되는 버퍼 수는 하위 식의 1에서 시작하여 99까지 계속됩니다. 정규식 내에서 \n을 사용하여 각 버퍼에 액세스할 수 있는데 여기서 n은 특정 버퍼를 식별하는 한 자리 또는 두 자리 10진수입니다.

역참조의 응용 사례 중 하나는 텍스트에서 두 개의 동일한 인접 단어를 찾는 기능을 제공합니다. 다음 문장을 사용해 봅니다.Is is the cost of of gasoline going up up?

이 문장에는 여러 개의 중복된 단어가 있습니다. 단어마다 중복된 내용은 찾지 않도록 해당 문장을 수정할 수 있는 방법이 있으면 좋을 것입니다. 다음 JScript 정규식에서는 그러한 작업을 위해 단일 하위 식을 사용합니다.

/\b([a-z]+) \1\b/gi

이 경우 하위 식은 괄호로 둘러싸인 모든 부분이 해당됩니다. 이 하위 식은 [a-z]+에서 지정한 대로 하나 이상의 영문자를 포함합니다. 정규식의 두 번째 부분은 앞에서 저장된 부분 일치, 즉 괄호 식에서 찾은 단어의 두 번째 사용에 대한 참조입니다. 이때 \1은 첫 번째 부분 일치를 지정하는 데 사용됩니다.

\b 단어 경계 메타문자는 개별 단어 단위로만 찾게 합니다. 그렇지 않은 경우 "is issued"나 "this is"와 같은 구는 이 식에 의해 잘못 식별될 수 있습니다.

다음 예제는 중복된 단어를 나열합니다. 이 예제는 일치 및 부분 일치를 코드에서 검색할 수 있는 방법을 보여 줍니다.

var result;

var re = /\b([a-z]+) \1\b/gi
var src = "Is is the cost of of gasoline going up up?"

// Get the first match.
result = re.exec(src);

while (result != null)
{
    // Show the entire match.
    print();
    print(result[0]);

    // Show the submatches.
    for (var index = 1; index < result.length; index++)
    {
        print("submatch " + index + ": " + result[index]);
    }

    // Get the next match.
    result = re.exec(src);
}

// Output:
//  Is is
//  submatch 1: Is

//  of of
//  submatch 1: of

//  up up
//  submatch 1: up

하위 식은 대체 문자열 내에서도 참조할 수 있습니다.

위에 나온 정규식을 사용할 경우 다음 예제는 연속되는 두 개의 동일 단어를 같은 단어 1개로 바꿉니다. replace 메서드에서 $1은 저장된 첫 번째 부분 일치를 가리킵니다. 부분 일치가 여러 개 있으면 $2, $3 등을 사용하여 연속적으로 부분 일치를 참조할 수 있습니다.

var re = /\b([a-z]+) \1\b/gi
var src = "Is is the cost of of gasoline going up up?"
var result = src.replace(re, "$1");
print(result);
// Output:
//  Is the cost of gasoline going up?

다음 예제에서는 문자열의 각 단어 쌍을 바꿉니다.

var re = /(\S+)(\s+)(\S+)/gi
var src = "The quick brown fox jumps over the lazy dog."
var result = src.replace(re, "$3$2$1");
print(result);
// Output:
//  quick The fox brown over jumps lazy the dog.

참고 항목

참조

replace 메서드

개념

교체 및 부분식

기타 리소스

정규식 소개