[팁] C#에서 이스케이프 시퀀스를 좀 더 편리하게 쓰는 방법

정규식을 가지고 장난을 치다가 우연히 발견한 팁이 있어서 올립니다. 다른 것은 아니고 @ 이라는 지시자 기호에 관한것입니다. 정규식을 표현하다보면 원래 표기하려는 내용이 아래와 같을 때가 종종있습니다.


“d{6}[1234]d{6}”


* 설명


주민등록번호의 외관상 형식을 점검하는 정규식 예제입니다. 1800년대에 사용하던 남/여 성별 구분용 7번째 숫자인 9와 0은 현재는 더 이상 의미가 없어서 정규식 상에서는 1900년대부터 시작하는 것으로 기준을 잡았습니다. 그리고 [1234]의 앞에 대시 (정규식 스타일의 표현으로는 “-” )는 옵션입니다. ^^


위와 같은 정규식이 있다고 가정하였을 때 위의 내용을 의도하던대로 표기하기 위해서는 이스케이프 시퀀스가 꽤 복잡한 모양새를 띄게 됩니다. 위의 내용 그대로라면 d 를 하나의 특수한 문법으로 인지하게 될 것입니다. 원하지 않던 결과일 것입니다. 따라서 이 점을 해결하기 위하여 보통은…


“d{6}[1234]d{6}”


아주 보기 안좋게 변해버렸습니다. 이것을 해결할 수 있는 좋은 방법이 없을까요? 그래서 찾게 된 것이 @ 기호입니다. @ 기호는 백슬래시를 이스케이프 시퀀스의 시작으로 취급하지 않고 백슬래시 그대로임을 나타냅니다. 따라서 @ 기호를 붙이면 n은 @ 기호를 붙이기 이전의 n과 동일한 의미가 됩니다.


@ 기호를 붙인 버전으로 바꾸어봅시다.


@”d{6}[1234]d{6}”


훨씬 보기 편해졌습니다. 참고로, 이 기능을 활용하면 파일 경로도 좀 더 보기 쉽게 쓸 수 있습니다. 가령 Windows나 Mac OS 등에서 기본적으로 사용되는 백슬래시를 두 번 연속 붙일 필요 없이 위와 같은 방법으로 한 번만 쓰면 됩니다.


“C:WINDOWSSYSTEM32”;


@”C:WINDOWSSYSTEM32″;


도움이 되셨기를 바랍니다. ^^


P.S. 자동 링크 기능이 편한 것은 사실입니다만 웬지 백 슬래시까지 자동으로 처리를 함으로 인해서 Internet Explorer의 헛점을 찌르는 것은 아닐런지 의심스럽군요. 백슬래시 기호를 인용할 때에는 URL을 끄도록 셋팅하셔야 할 것 같습니다. (URL을 풀어도 본문에 엔터 키를 치면 자동으로 다시 붙네요. 올리기 직전에 풀어야 겠습니다.)

댓글 남기기