본문 바로가기

CSE/개발

Regex Quantifier 사용시 주의할 점

보통 문자열이나 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