유틸리티 소개

정규표현식 조건 분기 if-then-else 패턴

일부 정규표현식 엔진은 조건 분기를 지원한다. 특정 조건에 따라 다른 패턴을 적용할 수 있다.

조건 분기 문법

(?(조건)참패턴|거짓패턴) 형태다. 조건이 맞으면 참패턴으로 매칭. PCRE, .NET, Python에서 지원한다.

예시

괄호로 시작하면 괄호로 끝나야 하는 경우. (()?.+?(?(1))|$) 이런 식으로 쓸 수 있다. 정규표현식 테스터에서 지원 여부를 확인하고 테스트해보자.

JavaScript는 미지원

JavaScript 정규표현식은 조건 분기를 지원하지 않는다. 조건 로직이 필요하면 코드로 처리해야 한다. 테스터로 가능한 패턴 범위를 확인하자.

에러 처리 고려하기

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

유니코드 처리

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

보안 측면에서

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

정규표현식 테스터에서 실시간으로 패턴을 테스트하고 결과를 확인하면서 학습하면 정규표현식 실력이 빠르게 늘어난다.