특정 단어가 뒤에 오지 않는 경우만 매칭하고 싶을 때가 있다. 부정 전방탐색(negative lookahead)을 쓴다.
부정 전방탐색 문법
(?!패턴) 이게 부정 전방탐색이다. 이 패턴이 뒤에 오지 않으면 매칭. 정규표현식 테스터에서 테스트해보자.
실제 예시
foo(?!bar) 이 패턴은 foo 뒤에 bar가 오지 않는 foo만 찾는다. foobar는 매칭 안 되고, foobaz는 매칭된다.
활용 사례
파일명에서 _backup이 안 붙은 것만 찾기. 특정 확장자가 아닌 파일 찾기. 테스터로 다양한 케이스를 실험해보자.
플래그 조합 활용
g, i, m 플래그를 상황에 맞게 조합해서 쓰면 더 유연하게 매칭할 수 있다. 대소문자 구분 없이 전역 검색하려면 gi를 쓰고, 여러 줄 처리가 필요하면 m을 추가하자. 정규표현식 테스터에서 플래그별 차이를 확인해보자.
캡처 그룹 효율적으로 쓰기
캡처 그룹이 많으면 성능에 영향을 줄 수 있다. 캡처가 필요 없는 그룹은 (?:...)로 비캡처 그룹으로 만들자. 정말 추출해야 하는 부분만 괄호로 감싸면 된다.
정규표현식 라이브러리 활용
자주 쓰는 패턴들은 라이브러리로 만들어져 있다. 이메일, 전화번호, URL 검증 같은 건 이미 검증된 패턴을 가져다 쓰는 게 안전하다. 테스터로 동작을 확인하고 사용하자.
복잡한 문자열 처리가 필요할 때 gimo.kr 정규표현식 테스터를 활용하면 패턴 작성과 검증이 훨씬 수월해진다. 실무에서 자주 쓰이는 패턴들을 익혀두면 생산성이 크게 올라간다.