정규식은 짧게 쓰면 강력하지만, 조금만 복잡해져도 눈으로 검증하기 어렵습니다.
특히 이런 상황에서 실수가 자주 납니다.
g,i,mflag를 빼먹음- capture group 번호가 꼬임
- greedy match가 너무 많이 잡음
- replace 결과가 예상과 다름
- 샘플에서는 되는데 실제 로그에서는 안 됨
이런 작업을 빠르게 확인하기 위해 만든 도구가 Regex Live Tester and Cheat Sheet입니다.
어떤 도구인가
이 도구는 JavaScript 정규식을 sample text에 바로 적용해 결과를 보여줍니다.
확인할 수 있는 것은 다음과 같습니다.
- match highlight
- match table
- capture group
- named capture group
- replacement preview
- flags 설정
- regex error message
- 자주 쓰는 token cheat sheet
입력한 텍스트와 pattern은 서버로 보내지 않습니다.
기본 사용법
사용 흐름은 이렇습니다.
- pattern 입력
- 필요한 flags 선택
- sample text 입력
- highlight와 match table 확인
- replacement가 필요하면 replacement input을 채움
정규식이 잘못되면 오류 메시지가 표시됩니다.
예를 들어 괄호를 닫지 않거나 잘못된 escape를 쓰면 match 결과 대신 에러 상태를 확인할 수 있습니다.
flags 확인하기
JavaScript regex에서 flags는 결과에 큰 영향을 줍니다.
g: 전체 match 탐색i: 대소문자 무시m: multi-line 처리s: dot이 newline도 matchu: Unicode modey: sticky match
테스트할 때 flag를 하나씩 켜고 끄면 pattern 자체 문제인지 옵션 문제인지 분리하기 쉽습니다.
capture group을 볼 때
정규식은 match된 전체 문자열보다 capture group이 더 중요할 때가 많습니다.
예를 들어 로그에서 status code만 뽑고 싶거나, URL에서 path 일부만 가져오고 싶을 때입니다.
도구의 match table은 각 match에 대해 group 값을 보여줍니다.
named capture group을 쓰면 의미가 더 명확합니다.
(?<status>\d{3})
이런 식으로 이름을 붙이면 나중에 replace나 parsing 코드로 옮길 때도 읽기 쉽습니다.
replace preview
정규식은 검색보다 치환에서 더 위험해질 때가 있습니다.
pattern은 맞았는데 replacement 결과가 이상하면 실제 파일이나 데이터가 망가질 수 있습니다.
그래서 이 도구에서는 replacement preview를 먼저 확인하도록 했습니다.
실제 코드에 넣기 전에 샘플 텍스트로 결과를 보는 습관이 좋습니다.
한 줄 요약
Regex Live Tester and Cheat Sheet는 JavaScript 정규식의 match, flags, capture group, replacement 결과를 브라우저에서 즉시 확인하는 도구입니다.