정규표현식을 작성하고 코드를 돌려봤는데 매칭이 안 된다. 괄호가 빠진 건지, 이스케이프를 잘못한 건지 코드만 봐서는 원인 파악이 어렵다. 정규식 테스트를 실시간으로 할 수 있으면 패턴을 고치면서 바로 결과를 확인할 수 있다.
실시간으로 패턴 확인하기
온라인 정규식 테스터에 패턴과 테스트 문자열을 넣으면, 매칭되는 부분이 즉시 강조 표시된다. 코드를 실행하지 않아도 패턴을 수정할 때마다 결과가 바뀌니까 시행착오가 빠르다.
매칭 결과에는 각 항목의 인덱스 위치와 캡처 그룹 정보가 함께 나온다. 괄호로 묶은 캡처 그룹이 제대로 잡히는지 한눈에 확인할 수 있다.
자주 쓰는 정규식 패턴
매번 처음부터 짜기보다, 이미 검증된 패턴을 가져다 쓰는 게 실수를 줄이는 방법이다. 프리셋으로 제공되는 패턴들이 있다.
| 프리셋 | 패턴 예시 | 매칭 대상 |
|---|---|---|
| 이메일 | [a-zA-Z0-9._%+-]+@... | [email protected] |
| 전화번호 | 01[016789]-\d{3,4}-\d{4} | 010-1234-5678 |
| URL | https?://... | https://example.com |
| 한글 | [가-힣]+ | 한글 텍스트 |
프리셋 버튼을 누르면 패턴이 자동으로 입력된다. 거기서 필요에 맞게 조금씩 수정하면 된다.
플래그 설정이 결과를 바꾼다
- g (global)
- 첫 번째 매칭만이 아니라 문자열 전체에서 모든 매칭을 찾는다.
- i (case-insensitive)
- 대소문자를 구분하지 않는다. Email과 email이 같은 패턴에 걸린다.
- m (multiline)
- ^와 $가 전체 문자열이 아니라 각 줄의 시작과 끝에 매칭된다.
- s (dotAll)
- 마침표(.)가 줄바꿈 문자까지 포함해서 매칭한다.
TIP JavaScript 기반 엔진이므로, Python이나 Java에서 지원하는 후방탐색(lookbehind) 등 일부 문법은 동작이 다를 수 있다. 사용하려는 언어의 엔진과 맞는지 확인하자.
정규식은 써본 사람도 한 번에 맞추기 어렵다. 실시간으로 결과를 보면서 고치는 게 가장 빠른 방법이다.