그런데 어느 독자분이 \s는 \도 검사하기 때문에 [s]와 검사 결과가 다르다는 의견을 보내주셨다. 윤종욱님 감사(__) 다음은 테스트 결과. 정말 \가 검사된다.
순수 문자 \만을 검사하기 위해서는 VIM 정규표현식과 PCRE 모두 예외처리, 즉 \를 두 번 입력해줘야 한다.
그런데 왜 [\s]는 \를 검사하지? 문자클래스에 \를 단독 입력했을 때는 검사하지 못하기 때문에 아무래도 버그로 보인다.
테스트 과정에서 재밌는 점도 하나 발견했다. VIM 정규표현식은 16진수 범위를 검사하는 메타문자 \x를 지원한다.
PCRE는 해당 메타문자를 지원하지 않는데, 문자클래스를 이용해도 순수 문자 x조자 검사하지 못한다.
반면 메타문자가 아닌 문자를 이용한 표현식 [\y]를 이용하면 순수 문자 y를 검사한다. 지원하는 메타문자는 문자클래스에서 인식, 지원하지 않는 메타문자는 순수 문자로도 인식하지 않고, 아예 무시한다는 얘기.
또 하나, VIM 정규표현식은 문자클래스에서 메타문자를 인식하지 않는다고 했는데, 인식하는 것도 있다. 일관성이라곤 없는 녀석(..)
문자클래스에서 인식되는 탭문자 |
문자클래스에서 인식되는 줄바꿈문자 |
관련 글
댓글 없음:
댓글 쓰기