캡처한 텍스트를 같은 패턴에서 다시 쓰기
역참조는 N번째 캡처 그룹이 실제로 잡은 텍스트와 똑같은 값을 요구해. 그룹 1은 \1, 그룹 2는 \2처럼 참조해.
\b(\w+)\s+\1\b는 the the, and and처럼 같은 단어가 연달아 나온 곳을 찾아. 첫 그룹이 어떤 단어를 잡든 뒤의 \1은 바로 그 단어와 같아야 해.
패턴을 한 번 더 쓰는 것과 달라
(\w+) \1은 두 번째 단어도 첫 번째 단어와 같아야 하므로 the cat에는 매칭하지 않아. 반면 (\w+) (\w+)는 두 그룹이 서로 다른 단어를 잡아도 되므로 매칭해.
엔진 지원
Python re, JavaScript, PCRE, Java처럼 백트래킹하는 엔진은 역참조를 지원해. RE2와 Go, ripgrep 기본 엔진은 선형 시간 보장을 위해 지원하지 않고, ripgrep에서는 --pcre2를 켜야 사용할 수 있어.
중복 단어 말고도 쓸 수 있어
(['"]).+?\1로 같은 종류의 따옴표가 여닫히는지 확인해.(.)\1{2,}로 같은 문자가 세 번 이상 이어진 구간을 찾아.<(\w+)>.+?</\1>로 같은 이름의 단순 태그 쌍을 찾을 수 있지만 실제 HTML 해석에는 파서를 써.