정규표현식 009. 메타문자 4

조회 수 6468 추천 수 0 2012.01.10 16:45:01

이번 회에서는 지금까지 다루지 않았던 메타문자 몇 개를 더 공부하겠습니다.


? : 없거나 한 글자와 매치됩니다. +에 대한 *의 관계는 .에 대한 ?의 관계와 같습니다. “뭐라? 이 말이 더 어렵잖아.” 갑자기 영어 시간이 생각나네요. 고래와 동물과의 관계는 뭐와 뭐와의 관계랑 같다는... 에구, 뭐가 뭐더라? 하두 오래 돼서 기억이 가물가물~


위 물음표 기호는 처음 나오는 것이니까 조금 더 부연설명해 보겠습니다. URL을 보면 대개 http://로 시작합니다만 https://로 시작하는 사이트도 간혹 있습니다. 중요 데이터를 암호화해서 전달한다는 의미로 우리은행 같은 경우가 여기 해당됩니다. 말 나온 김에 우리은행은 크롬플러스나 파이어폭스 같은 웹브라우저에서도 공인인증서를 띄울 수 있습니다. 그 지겨운 마이크로소프트 익스플로러를 쓰지 않아도 되고 이보다 더 지겨운 액티브엑스 쓰레기들을 설치하지 않아도 된다는 얘기입니다. 제발 다른 은행들도 우리은행처럼 고객을 위한 배려를 해주시길 이 자리를 빌어 간절히 소망해 봅니다.


아, 하나 더요. 보안은 물론 중요합니다. 하지만 우리나라 은행들 하는 꼬락서니들을 보면 사용자를 위한다기보다 완전 자기네 면피용입니다. 다시 말해 해킹 같은 사건이 터질 경우 “우리는 보안에 대해서 이 정도로 최선을 다 했으니 우리 책임은 아니야”라고 둘러대기 위한 방어장치라는 얘기입니다. 아무 은행이나 들어가 보세요. 처음에 공인인증서가 한번 뜹니다. 좋습니다. 당연하죠. 하지만 송금하려고 이것저것 입력하다 보면 똑같은 공인인증서가 한번 더 뜹니다. 송금을 3번 한다면 공인인증서가 추가로 3번 더 뜹니다. 이거 완전 사람을 바보 취급하는 거 아닙니까? 똑같은 비밀번호를 여러번 입력한다고 보안이 강화되는 거냐고요.


에효~ 얘기가 또 좀 샜죠? http://로 시작하는 문자열과 https://로 시작하는 문자열을 동시에 검색해야 하는 경우 바로 ? 메타문자가 사용됩니다. 다음과 같이 하면 됩니다.


https?://


이를 풀어보면, 물음표 앞의 s는 없어도 되지만 있을 경우는 정확히 s 한 글자만 허용된다는 의미입니다. 즉 http://와 https:// 두 가지 경우 모두 매치됩니다. 그리고 이 두 경우만 매치됩니다. 말 나온 김에 일반적인 URL 전체와 매치되는 정규식을 보여드리겠습니다. 지금쯤이면 ‘뭐야, 너무 쉽잖아’ 하시리라 봅니다.


https?://[\w./]+


\s : 공백문자와 매치됩니다. 여기서 공백문자는 실제의 공백문자(스페이스) 외에 줄바꿈 문자, 탭 등도 포함됩니다. 구체적으로는 [\f\n\r\t\v ]와 같습니다.


\S : 위와 반대입니다. [^\f\n\r\t\v ]와 같습니다.


여기서 잠깐 보충학습에 들어갑니다. 문자 집합 안에 들어가는 캐럿에 관해서입니다. 가령,


[^akt]


위의 식은 a나 k, t를 제외한 글자를 의미합니다. 즉 b, c, d 등과 모두 매치됩니다. 그런데 캐럿을 대괄호에 이어서 쓰지 않고 중간에 쓰면 어떻게 될까요? 아래처럼 말입니다.


[a^kt]


이때는 캐럿이 여집합으로서의 의미를 잃어버리고 본래의 글자로 돌아갑니다. 즉 위의 식은 a, ^, k, t와 매치됩니다. 결국 캐럿은 대괄호 안의 문자집합에서 가장 앞에 표기될 때만 메타문자로서의 기능을 하게 됩니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
» 정규표현식 009. 메타문자 4 머니북 2012-01-10 6468
8 정규표현식 008. 메타문자 3 머니북 2012-01-09 7576
7 정규표현식 007. 메타문자 2 마라톤맨 2012-01-08 12361
6 정규표현식 006. 메타문자 1 마라톤맨 2012-01-07 8971
5 정규표현식 005. 근데 어디다 쓰는 것인고? 마라톤맨 2012-01-06 6650
4 정규표현식 004. 정규표현식이란? 마라톤맨 2012-01-05 7413
3 정규표현식 003. 맛보기 울트라 수퍼 심화 단계 마라톤맨 2012-01-04 6561
2 정규표현식 002. 맛보기 심화 단계 마라톤맨 2012-01-03 6675
1 정규표현식 001. 맛보기 마라톤맨 2012-01-02 8270