정규표현식 013. 검색할 위치 2

조회 수 4555 추천 수 0 2012.01.16 10:25:58

대개의 이스케이프 문자열 메타문자가 그렇듯이 단어경계에도 반대되는 기호가 존재합니다. 물론 소문자를 대문자로 바꾼 것입니다. \B가 그것으로 의미 또한 반대입니다. 가령,

 

\Berica\B

 

위의 정규식으로 검색하면 어떻게 될까요? 이번에는 pericana만 매치됩니다. 즉 다른 단어의 사이에 끼여 있는 문자열을 찾게 됩니다.

 

그런데 단어경계를 쓸 때 주의하셔야 할 게 하나 있습니다. 원래 단어라는 게 주로 영문자로 이루어져 있잖아요? 그래서 그런지 영문자(숫자도 포함)와 그밖의 문자에 대해 작동하는 방식이 다릅니다. 이게 무슨 말이냐구요? 예를 볼게요.

 

Bach ? Goldberg Variations

Villa-Lobos ? Prelude no.1

 

위의 문자열에서 하이픈을 찾으려면 어떻게 해야 할까요?

 

그냥 찾으면 되지 않나?”

 

맞습니다. T_T 하지만 하이픈의 쓰임새가 좀 다르죠? Villa-Lobos는 이 자체로 사람 이름입니다. 이처럼 하이픈을 포함하는 사람 이름이 좀 있죠. 유명한 작곡가 Saint-Saens이라든가 Castelnuovo-Tedesco 같은 사람들이요.

 

아무튼 사람 이름 사이에 들어 있는 하이픈 외의 다른 하이픈들은 각 컬럼들을 구분하기 위한 용도로 쓰이고 있습니다. 따라서 어느 하이픈을 찾느냐에 따라 검색식이 달라집니다. 컬럼 구분용으로 쓰인 하이픈을 찾아볼까요?

 

그렇다면 쉽지. 단어로 쓰인 글자를 검색할 때는 \b로 찾는다며?”

 

그럴 것 같죠? 이런 식으로요.

 

\b-\b

 

그런데 위의 정규식으로 찾으면 Villa-Lobos가 매치됩니다. 좀 이상하죠? 당연히 반대여야 할 것 같은데요. 하지만 단어경계라는 차원에서 다시 한번 곰곰이 생각해 보면 이게 실은 맞는 결과입니다. 하이픈이 단어 안에서 사용되는 경우라면 앞뒤로 공백이 없어야 할테니까요. 에구, 좀 혼동되시죠? 실은 저도 헷갈렸답니다. 하지만 어쩌겠습니가. 정규식을 설계한 사람이 이렇게 만들어 놓은 걸요.

 

, 참 정규식을 설계한 사람이 누구인지 아십니까? 저도 모르죠. ~ 에구, 맞아도 할 말 없습니다만 오늘날 널리 쓰이는 정규식은 주로 펄에 뿌리를 두고 있다고 합니다. 말하자면 펄이 정규식의 뿌리가 된 셈이죠.

 

List of Articles
번호 제목 글쓴이 날짜 조회 수
29 정규표현식 029. 자바스크립트의 정규식 5 마라톤맨 2012-03-28 8713
28 정규표현식 028. 자바스크립트의 정규식 4 마라톤맨 2012-03-09 4548
27 정규표현식 027. 자바스크립트의 정규식 3 마라톤맨 2012-03-02 4675
26 정규표현식 026. 자바스크립트의 정규식 2 마라톤맨 2012-02-27 5317
25 정규표현식 025. 자바스크립트의 정규식 1 마라톤맨 2012-02-22 6525
24 정규표현식 024. 숙제와 답 마라톤맨 2012-02-17 4840
23 정규표현식 023. 정규식의 옵션과 여러 정규식 엔진들 마라톤맨 2012-02-15 15940
22 정규표현식 022. 드라이브명과 디렉토리, 파일명 분리 2 마라톤맨 2012-02-13 9827
21 정규표현식 021. 드라이브명과 디렉토리, 파일명 분리 1 마라톤맨 2012-02-08 7511
20 정규표현식 020. IP 주소 유효성 검사 2 마라톤맨 2012-02-06 6313
19 정규표현식 019. IP 주소 유효성 검사 1 마라톤맨 2012-02-02 52989
18 정규표현식 018. 하위 표현식 3 마라톤맨 2012-01-30 4871
17 정규표현식 017. 하위 표현식 2 마라톤맨 2012-01-27 4017
16 정규표현식 016. 하위 표현식 1 마라톤맨 2012-01-25 5754
15 정규표현식 015. 최대 매치와 최소 매치 2 마라톤맨 2012-01-20 4415
14 정규표현식 014. 최대 매치와 최소 매치 1 마라톤맨 2012-01-18 7628
» 정규표현식 013. 검색할 위치 2 마라톤맨 2012-01-16 4555
12 정규표현식 012. 검색할 위치 1 마라톤맨 2012-01-13 5129
11 정규표현식 011. 검색 문자 개수 지정하기 머니북 2012-01-12 8894
10 정규표현식 010. 웹 서버 설정에도 필요 머니북 2012-01-11 7416