유틸리티 소개

특정 문자열 사이의 내용 추출하는 패턴

START와 END 사이의 텍스트만 뽑고 싶다. 자주 있는 작업이다.

기본 패턴

START(.*?)END 이 패턴에서 그룹1이 사이 내용이다. ? 붙여서 게으른 매칭. 정규표현식 테스터에서 START내용END를 테스트해보자.

여러 줄인 경우

사이 내용이 여러 줄이면 [sS]*? 를 쓴다. .은 기본적으로 줄바꿈을 안 잡으니까.

중첩된 경우

START A START B END END 같은 중첩 구조는 정규표현식으로 어렵다. 스택 기반 파싱이 필요하다. 테스터로 단순한 경우만 처리하자.

에러 처리 고려하기

잘못된 정규표현식은 런타임 에러를 일으킬 수 있다. 동적으로 패턴을 만들 때는 try-catch로 감싸거나 미리 검증하자. 정규표현식 테스터에서 문법 오류를 미리 확인할 수 있다.

유니코드 처리

한글이나 이모지 같은 유니코드 문자를 처리할 때는 u 플래그가 필요할 수 있다. 다국어 지원이 필요하면 유니코드 문자 클래스를 활용하자.

보안 측면에서

사용자 입력으로 정규표현식을 만들면 ReDoS 공격에 취약할 수 있다. 신뢰할 수 없는 입력을 패턴으로 쓰지 말고, 꼭 필요하면 타임아웃을 설정하자. 테스터로 다양한 입력에 대한 동작을 확인하고 안전하게 사용하자.

복잡한 문자열 처리가 필요할 때 gimo.kr 정규표현식 테스터를 활용하면 패턴 작성과 검증이 훨씬 수월해진다. 실무에서 자주 쓰이는 패턴들을 익혀두면 생산성이 크게 올라간다.

정규표현식 테스터를 적극 활용해서 다양한 패턴을 실험해보자. 실전 경험이 쌓일수록 정규표현식 작성이 수월해진다.