아스키(ASCII) 코드 POSIX 문자 클래스

                                                   

바로, 앞의 포스팅에서 문자 클래스에 16진수 코드값을 넣어 아스키(ASCII) 코드의 해당 문자를 나타낼 수 있음을 언급했고 동시에 POSIX 문자 클래스를 이용하면 16진수 코드값 없이 이를 쓸 수 있다고 했다. 이를 확인해 보자.

                                                   

아스키(ASCII) 코드POSIX 문자 클래스의 관계를 요약하면 다음 표와 같다.

                                                   

 10진수

16진수 

 문자 종류

POSIX 문자 클래스

 0~31

 0x00~0x1F

 제어문자

[:ascii:], [:cntrl:]

 32

0x20

공백(Space)

[:ascii:], [:print:], [:space:], [:blank:]

 33~47

 0x21~0x2F

구문기호 및 심볼

[:ascii:], [:graph:], [:print:][:punct:]

 48~57

 0x30~0x39

숫자(0~9)

[:ascii:], [:graph:][:print:], [:alnum:], [:digit:]

 58~64

 0x3A~0x40

구문기호 및 심볼

[:ascii:], [:graph:][:print:][:punct:]

 65~90

 0x41~0x5A

대문자( A~Z)

[:ascii:], [:graph:][:print:], [:alnum:], [:alpha:], [:upper:]

 91~96

 0x5B~0x60

구문기호 및 심볼

[:ascii:], [:graph:][:print:][:punct:]

 97~122

 0x61~0x7A

소문자( a~z)

[:ascii:], [:graph:][:print:], [:alnum:], [:alpha:], [:lower:]

 123~126

 0x7B~0x7E

구문기호 및 심볼

[:ascii:], [:graph:][:print:], [:punct:]

 127

 0x7F

제어문자

[:ascii:], [:cntrl:]

                                                   

이 중 앞 서 다루지 않았던 [:ascii:], [:cntrl:], [:graph:], [:print:], [:punct:]5개의 POSIX 문자 클래스에 대해서 자세히 알아보자.


아스키(ASCII) 문자 전체

                                                   

아스키(ASCII) 코드에 해당하는 문자 전체POSIX 문자 클래스로 나타낼 수 있다. 16진수0x00에서 0x7F까지 128개의 아스키 문자를 다음과 같이 나타낸다

                                                   

[:ascii:] 아스키(ASCII) 코드에 해당하는 문자 전체, [\x00-\x7F]


제어 문자(Control characters)

                                                   

아스키 문자 중에서 0x00~0x1F(0번부터 31번까지)0x7F(127)아스키 문자제어 문자(Control characters)라고 부르고 다음처럼  POSIX 문자 클래스로 나타낼 수 있다.

                                                   

[:cntrl:] 제어 문자, [\x00-\x1F\x7F]


그 외 볼 수 있는(Visible) 문자

                                                   

아스키 문자 중에서 제어 문자를 제외한 문자들은 알파벳 대소문자와 숫자 구문기호(?, ! ), 공백으로 실제 화면에 나타나는 문자들이다이러한 문자들은 [:graph:], [:print:], [:punct:]의 3종류로 나눈다. 

                                                   

[:graph:]는 아스키(ASCII) 코드[\x21-\x7E]에 해당하는 문자로 제어 문자와 공백 문자를 제외한 눈으로 볼 수 있는 문자들이다.

                                                   

[:graph:]  보이는 문자, [\x21-\x7E]제어 문자와 공백 문자 외의 문자

 

[:print:]는 아스키(ASCII) 코드[\x20-\x7E]에 해당하는 문자로 [:graph:]에 공백을 더한 문자들이다.

                                                   

[:print:]  보이는 문자와 공백, [\x20-\x7E]제어 문자 외의 문자


[:punct:]는 아스키(ASCII) 코드에서 구문기호 및 심볼문자 클래스 [!"\#$%&'()*+,\-./:;<=>?@\[\\\]^_`{|}~]에 해당하는 문자들이다. 

                                                   

[:punct:] 구문기호 및 심볼


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 



정규표현식 반복하기


주민등록번호를 정규표현식으로 나타내려면 어떻게 해야 할까? 


주민등록번호는 엄밀하게 말하면 모든 자리의 수가 0에서 9까지의 숫자로 이루어진 것은 아니지만 편의상 ○○○○○○-○○○○○○○ 형식의 앞에 6개의 숫자하이픈(-) 뒤에 7개의 숫자로 이루어진 일련의 문자열로만 다룬다고 할 때 정규표현식은 어떻게 될까?


앞서 우리는 [0-9]라는 문자 클래스를 이용하여 숫자들에 해당하는 하나의 문자를 지정하는 법을 배웠다.


그렇다면 정규표현식은 다음과 같을 것이다.


[0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]


너무 길다. 이렇게 반복되는 경우를 효율적으로 처리할 방법이 필요하다.


정규표현식에서는 특정한 표현식을 반복하는 방법을 아래와 같이 제공하고 있다.


\{min,max\} → 앞의 내용이 min 이상 max 이하 반복됨

* 앞의 내용이 0 이상 반복됨

\+ 앞의 내용이 1 이상 반복됨


\{min,max\}를 이용하여 주민등록번호를 지정하면 다음과 같다


[0-9]\{6,6\}-[0-9]\{7,7\}

\{6,6\}은 최소 6번 최대 6번 이므로 그냥 6번 반복한다는 뜻이다.

\{7,7\}은 최소 7번 최대 7번 이므로 그냥 7번 반복한다는 뜻이다.


\{min,max\}에서 min0으로 할 경우 반복이 전혀 없는 경우도 해당된다.


[0-9]\{0,max\} 숫자가 0번 이상 max 이하 반복되므로 숫자가 전혀 없는 경우도 해당됨


\{min,max\}에서 max를 생략할 경우 반복 횟수에 제한이 없어진다. 따라서

 

*  \{0,\}과 동일하다.

\+ → \{1,\}과 동일하다.


Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


033 vim의 정규표현식(7) 반복.apkg



역슬래쉬(\)를 붙이는 문자들


문자열의 집합을 표현하는 데 사용하는 형식 언어가 정규표현식이다


문자열의 집합을 효과적으로 표시하려다 보니 다양한 문자들을 문자 외의 다른 용도로 사용하기 위하여 역슬래쉬(\)를 붙이거나 문자 외의 다른 용도로 특수하게 사용되는 문자들을 문자 그 자체로 나타내기 위해서 역슬래쉬(\)를 붙이기도 한다. 


특정 용도의 문자를 문자 그 자체로 나타내기 위하여 역슬래쉬(\)를 붙이는 경우


\. 임의의 한개의 문자가 아닌 문자로써 (.)을 나타냄

\\ 문자 역슬래쉬(\)를 나타냄

\[ 문자 왼쪽 대괄호([)를 나타냄

\] 문자 오른쪽 대괄호(])를 나타냄


특정 문자를 탭(tab), Esc 등 문자 외의 다른 용도로 사용하기 위하여 역슬래쉬(\)를 붙이는 경우


\e esc

\t tab

\r 캐리지 리턴

\b 백스페이스

\n 개행 문자



Anki 파일


아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다. 


032 vim의 정규표현식(6) 특수 문자.apkg


+ Recent posts