전후방 탐색 지원은 엔진마다 크게 달라
전방 탐색은 많은 백트래킹 엔진에서 지원하지만 RE2와 Go, ripgrep 기본 엔진에서는 사용할 수 없어. 후방 탐색은 지원 범위가 더 좁고, 가변 길이까지 허용하는지는 엔진과 버전에 따라 달라.
| 엔진 | 전방 탐색 | 후방 탐색 | 가변 길이 후방 탐색 |
|---|---|---|---|
Python re | ✓ | ✓ | ✗ (컴파일 오류) |
Python regex | ✓ | ✓ | ✓ |
| JavaScript | ✓ | ✓ (ES2018) | ✓ (ES2018) |
| PCRE2 | ✓ | ✓ | 10.43+ 제한적 지원 |
| Java | ✓ | ✓ | 최대 길이가 제한된 경우 지원 |
| .NET | ✓ | ✓ | ✓ |
Go regexp / RE2 | ✗ | ✗ | ✗ |
| ripgrep 기본 엔진 | ✗ | ✗ | ✗ |
ripgrep --pcre2 | ✓ | ✓ | 버전에 따라 제한적 지원 |
호환성이 중요할 때
여러 언어나 RE2 기반 서비스에서 같은 패턴을 써야 한다면 전후방 탐색 대신 앵커, 캡처 그룹, 후처리를 선택해. 한 엔진에 고정된 코드라면 실제 배포 버전의 지원 범위를 확인한 뒤 전후방 탐색을 써.
테스터의 엔진도 맞춰
regex101에서 성공한 패턴이 실제 런타임에서는 실패할 수 있어. PCRE2, Python, ECMAScript 가운데 배포 환경과 같은 엔진을 선택하고, Go나 RE2라면 전후방 탐색 없는 대안도 함께 시험해.