1. 메타 문자(meta character)


정규 표현식에서의 메타 문자(meta character)는 특별한 존재입니다. 메타 문자 그 자체는 특별한 녀석이며, 이미 사전에 약속되어진 문자를 뜻합니다. (특수한 문자나 다름이 없음) 사전에 약속된 문자이기에, 메타 문자는 그대로 쓸 수 없으며 만약 문자로 쓰려면 역슬래시(\)를 하나 더 덧붙여 주어야 합니다. 아래 표를 한번 보도록 합시다.


메타 문자

설명

\v 

수직 탭 

\n 

개행 

\f 

폼 피드 

\r 

캐리지 리턴 

\t 

탭 

[\b] 

백스페이스 

\d 

[0-9]와 동일한 기능 

\D 

[^0-9]와 동일한 기능 

\w 

[a-zA-Z0-9_]와 동일한 기능 

\W 

[^a-zA-Z0-9_]와 동일한 기능 

\s

[\f\n\r\t\v]와 동일한 기능 

\S 

[^\f\n\r\t\v]와 동일한 기능 

\x 

16진수 숫자와 일치 

\0 

8진수 숫자와 일치 


한번 메타 문자인 \t를 통해, 텍스트 내에서 탭 문자를 찾아보도록 하겠습니다.


Reg. Expression:

\t

Text:

"Bonaparte has said so," remarked Prince Andrew with a sarcastic smile.

It was evident that he did not like the vicomte and was aiming his remarks at him, though without looking at him.

"'I showed them the path to glory, but they did not follow it,'" Prince Andrew continued after a short silence, again quoting Napoleon's words. "'I opened my antechambers and they crowded in.' I do not know how far he was justified in saying so."


그리고 이번에는, \d 문자를 통해 숫자가 포함된 문자열을 검색해보도록 하겠습니다.


Reg. Expression:

\[\d\]

Text:

[0]

[a]

[1]

[2]

[b]

[c]

[3]


정규 표현식을 살펴보면 대괄호를 그대로 쓰게되면 문자 집합을 나타내기 때문에, 저렇게 역슬래시를 통해 일반 문자임을 나타내 주어야만 합니다. 그렇다면 이렇게 되는 셈이죠. [와 ] 사이에 0-9 까지의 범위의 수가 위치하여야 일치합니다. 이번에는 \W를 통해 검색을 해보도록 합시다.


Reg. Expression:

\[\W\]

Text:

[0]

[-]

[a]

[B]

[$]

[@]

[3]


위를 보시면, W는 표에 나와있듯이 [^a-zA-Z0-9_]와 동일합니다. 즉, 소문자, 대문자, 숫자, 그리고 언더바(_)가 대괄호 사이에 등장하지 않으면 일치되는 것입니다. 이번엔 개행 문자를 의미하는 16진수 값을 통해 검색을 해봅시다.


Reg. Expression:

\x09

Text:

Text1  Text2  Text3


정규 표현식에 쓰인 16진수는 9, 아스키코드 9를 나타냅니다. (즉 탭문자를 가리킴) 텍스트에 일치된 부분을 살펴보시면 탭 문자가 쓰인 부분만 일치됨을 확인하실 수가 있습니다. 간편하죠? 다음 강좌에서는 연속된 문자 찾기에 대해 알아보도록 하겠습니다. 수고하셨습니다.