보통 문자열이나 HTML 코드 등을 파싱 할 때 Regex(Regular Expression, 정규표현식)를 많이 사용한다. Regex를 이용하면 모든 문자열을 효율적으로 표현할 수 있기에 잘 다루면 큰 도움이 된다. 이런 Regex에는 Quantifier라는 수를 표현할 수 있는 문법이 있는데, 주로 다음을 일컫는다.
- ? : 0번 또는 1번
- * : 0번 이상
- + : 1번 이상
- {N,} : N번 이상
- {N,M} : N번 이상 M번 이하
예를 들어, a+은 a가 1번 이상 반복되는 'a', 'aa', 'aaa' 등을 말한다. 이때 주의해야 할 Quantifier는 제일 마지막에 있는 {N,M}이다. 바로 띄어쓰기를 조심해야 하는데, {N, M}과 {N,M}은 엄연히 다른 것으로 후자가 Quantifier의 역할을 한다. 배열 선언과 Syntax가 같고, 배열 선언을 할 때 항상 띄어쓰기를 하는 습관이 있었던 나는 아무렇지 않게 전자로 썼고, 디버깅을 한참 한 후에야 찾아낼 수 있었다. 이 글을 읽는 분들은 그런 시간 낭비를 하지 않길 바란다...
cf) 전자의 뜻은 문자 그대로(literally) "{N, M}"을 뜻한다.
심지어 맞춤법 검사기에서도 전자가 맞다고 나온다.
'CSE > 개발' 카테고리의 다른 글
Type System of TypeScript (2) | 2022.09.20 |
---|---|
새로고침이 안된다면? (0) | 2022.09.11 |
Python Decorator (0) | 2022.09.05 |