문자 클래스 외부에서 백슬래시 뒤에 0보다 큰 숫자(가능한 한 자리 숫자)가 오는 것은 Quote .
백슬래시 바로 다음에 오는 숫자가 10보다 작으면 항상 역참조이며, 패턴에 캡처 그룹이 많지 않으면 오류가 발생합니다. 즉, 인용괄호의 개수는 인용괄호의 개수가 10개 미만일 수 없습니다. 숫자가 처리되는 방식을 보려면 위의 "백슬래시" 섹션을 참조하세요. 역참조는 하위 그룹 패턴의 콘텐츠를 일치시키는 대신 대상문자열에서 참조된 캡처 그룹이 실제로 캡처한 콘텐츠와 직접 일치합니다. 따라서 패턴 (sens|respons)e 및 1ibility는 "감각과 감성" 및 "반응과 책임"과 일치하지만 "감각과 책임"은 일치하지 않습니다. 예를 들어 역참조 시 대소문자 구분 일치가 강제로 수행되는 경우 ((?i)rah)s+1은 "rah rah" 및 "RAH RAH"와 일치하지만 원래 캡처 하위 그룹인 경우에도 "RAH rah"와 일치하지 않습니다. 자체는 대소문자를 구분하지 않습니다. 주석: 여기서 고려해야 할 것은 역방향 참조에서 기대하는 내용이 참조된 캡처 하위 그룹에서 얻은 내용과 정확히 동일하다는 것입니다(물론 역방향 참조 전에 내부 옵션을 설정하여 이를 구별할 수 없게 만들 수 있습니다). 대소문자를 변경하거나 모드 수정자를 추가하여 달성할 수도 있습니다. 그러나 이 접근 방식은 실제로 동작을 외부에서 제어합니다.
동일한 내용을 참조하는 역참조가 두 개 이상 있을 수 있습니다. 하급 집단. 하위 그룹은 실제로 특정 일치에 사용되지 않을 수 있으며, 이 경우 하위 그룹에 대한 역참조가 실패합니다. 예를 들어, "a"로 시작하지만 "bc"가 아닌 문자열을 일치시킬 때 패턴 (a|(bc))2는 항상 실패합니다. 최대 99개의 역참조가 있을 수 있으므로 백슬래시 바로 다음에 나오는 모든 숫자는 잠재적인 역참조 개수가 될 수 있습니다. 패턴 뒤에 역참조 뒤에 숫자가 오는 경우 일부 구분 기호를 사용하여 역참조 구문을 종료해야 합니다. PCRE_EXTENDED 옵션이 설정된 경우 공백을 사용하여 이 작업을 수행할 수 있습니다. 다른 경우에는 빈 역참조가 참조하는 하위 그룹 내에 역참조가 나타나면 일치가 실패합니다. 예를 들어, (a1)은 일치하는 항목을 얻지 못합니다. 그러나 이 참조는 내부 하위 패턴 반복에 사용될 수 있습니다. 예를 들어, (a|b1)+ 패턴은 "a"는 물론 "aba", "ababba" 등으로 구성된 문자열과 일치합니다. (주석: 하위 그룹 내부에는 선택적 경로가 있으므로 선택적 경로 경로는 일치를 완료한 후 역참조가 콘텐츠를 참조할 수 있습니다. 하위 패턴의 각 반복 중에 역참조는 이전 반복 중에 하위 그룹이 일치한 문자열과 일치합니다. 이 작업을 수행하려면 패턴은 첫 번째 반복에서 역참조가 일치할 필요가 없음을 패턴이 보장할 수 있어야 한다는 조건을 충족해야 합니다. 이 조건은 위의 예와 같이 선택적 경로를 사용하거나 최소값이 0인정량자를 사용하여 역참조를 수정하여 구현할 수 있습니다.
PHP 5.2.2부터 g 이스케이프 시퀀스를 하위 패턴에 대한 절대 참조와 상대 참조 모두에 사용할 수 있습니다. 이 이스케이프 시퀀스 뒤에는 부호 없는 숫자 또는 음수가 와야 하며 선택적으로 괄호로 묶어야 합니다. 시퀀스 1, g1 및 g{1} 사이에는 동의어 관계가 있습니다. 이 사용법은 역참조를 설명하기 위해 백슬래시 뒤에 숫자 값을 사용함으로써 발생하는 모호성을 제거합니다. 이 이스케이프 시퀀스는 역참조와 8진수 문자를 구별하는 데 도움이 되며, 역참조 뒤에 g{2}1과 같은 소스 일치 숫자가 오는 것을 더 명확하게 해줍니다. g 음수가 뒤따르는 이스케이프 시퀀스는 상대 역참조를 나타냅니다. 예를 들어, (foo)(bar)g{-1}은 "foobarbar" 문자열과 일치할 수 있고, (foo)(bar)g{2}는 "foobarfoo"와 일치할 수 있습니다. 이는 특정 하위 그룹에 대한 이전 참조의 하위 그룹 시퀀스 번호를 추적하기 위해 긴 모드의 옵션으로 사용됩니다. 역참조는 (?P=name)과 같은 하위 그룹 이름을 사용하거나 PHP 5.2.2부터 k