뒤따르면 안 되는 조건 확인하기
(?!...)는 현재 위치 뒤의 텍스트가 조건과 맞지 않을 때만 성공해. 검사한 문자는 소비하지 않고 본 패턴은 같은 위치에서 계속 진행해.
자주 쓰는 경우
cat(?!s)는 cat은 찾지만 cats 안의 cat은 제외해. 특정 접미사나 예약어가 뒤따르는 경우를 빼고 싶을 때 같은 방식으로 써.
http(?!s://)는 https://가 아닌 http만 골라낼 수 있어. 이미 안전한 참조는 건너뛰고 평문 HTTP만 찾는 작업에 맞아.
질문을 뒤집어 봐
무엇을 매칭할지 먼저 묻는 대신 다음에 무엇이 오면 안 되는지 정해. 본 패턴은 원하는 모양을 긍정형으로 설명하고, 예외 하나를 부정형 전방 탐색으로 제외하면 읽기 쉬운 경우가 많아.
탐욕적 수량자와 함께 쓸 때
\w+(?!X)처럼 탐욕적 수량자 뒤에 붙이면 엔진이 문자를 되돌려 주면서 다른 끝점을 시도할 수 있어. 부정 조건만 보지 말고 수량자가 어느 경계까지 소비하는지도 함께 확인해.