역행 검사
업데이트: 2007년 11월
정규식에 선택적 또는 대체 일치 패턴을 사용하면 정규식 엔진은 입력 문자열을 검사하는 동안, 가능한 모든 일치 항목을 찾기 위해 하나 이상의 방향으로 분기할 수 있습니다. 따라서 첫 번째 방향에서 일치 항목을 찾지 못하면 엔진은 입력 문자열에서 분기한 지점으로 돌아가 다른 일치 항목을 검사합니다.
예를 들어, 회색을 의미하는 두 가지 철자인 gray와 grey를 찾도록 디자인된 정규식에서 대체 문자(|)를 사용하여 두 철자를 모두 찾을 수 있는 정규식인 gr(a|e)y를 만듭니다. greengraygrowngrey입력 문자열에 이 정규식을 적용하면 엔진은 먼저 gray와 일치하는 항목을 찾습니다. 입력 문자열의 처음 두 개 문자(gr)를 찾지만 그 뒤에 e(green)가 오므로 실패합니다. 그런 다음 대체 문자 바로 앞에 있는 성공적인 일치 항목인 r로 돌아가서 grey를 찾습니다. 그러나 green의 두 번째 e에 도달했을 때 다시 실패합니다. 엔진은 계속하여 이러한 방식으로 검색을 진행하여 입력 문자열에 포함된 gray와 grey 두 단어를 찾습니다.
다음 코드 예제에서는 이 정규식을 만들어 입력 문자열에 적용하는 방법을 보여 줍니다.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
' Define strings: "gray" and "grey".
Dim r As New Regex("gr(a|e)y")
Dim m As MatchCollection = r.Matches("greengraygrowngrey")
Console.WriteLine("Number of groups found: {0}", m.Count)
End Sub
End Module
' The example displays the following output:
' Number of groups found: 2
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
// Define strings: "gray" and "grey".
Regex r = new Regex("gr(a|e)y");
MatchCollection m = r.Matches("greengraygrowngrey");
Console.WriteLine("Number of groups found: {0}", m.Count);
}
}
// The example displays the following output:
// Number of groups found: 2