정규표현식 연습 사례


 이제까지 배웠던 vim 정규표현식 패턴을 응용해 보자.


[a-z]\+ 소문자로만 이루어진 문자열

ex) "worldcup", "john"


[a-z]\+[0-9]\+ 앞에는 소문자 문자열이 오고 뒤에는 숫자가 오는 문자열

ex) "worldcup2002", "john27"


[a-z]\+[0-9]* 앞에는 소문자 문자열이 오고 뒤에는 숫자가 오거나 소문자만 있는 문자열

ex) "john", "john1", "john27", "john2005"


Hello\ [a-z]\+[0-9]* → Hello 한칸 건너고 알파벳 소문자 문자열이 오고 뒤에는 아무것도 없거나 숫자가 오는 문자열

ex) "Hello john", "Hello john1", "Hello john27", "Hello john2005"


 ※ 역슬래쉬스페이스바(\ )는 문자 그대로 한 칸의 공백을 의미함. 공백 문자가 명령어나 인자들을 구분하는 의미로 사용되는 메타 문자이기 때문에 공백 앞에 역슬래쉬(\)를 붙여주어야 정상적인 공백으로 인식한다


^[0-9]\+.* 행의 시작에서 숫자로 시작하는 문자열

^[^0-9]\+.* 행의 시작에서 숫자로 시작하지 않는 문자열


.*[0-9]$ 행의 끝에서 숫자로 끝나는 문자열

.*[^0-9]$ 행의 끝에서 숫자로 끝나지 않는 문자열


[a-z]\+[0-9]\{4,7\} 알파벳 소문자 문자열 뒤에 숫자로 구성된 문자가 연속으로 4~7번 반복되는 문자열

 

 C에서 변수를 선언할 때 int var; 같은 문자열에 해당하는 패턴은?


int\(\ \|\t\|\n\)\+var; \(\ \|\t\|\n\)\+ 부분은 모든 화이트스페이스(공백, , 개행)의 연속을 의미함

 

Anki 파일


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


034 vim의 정규표현식(7) 몇 가지 예제들.apkg

정규표현식 반복하기


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


주민등록번호는 엄밀하게 말하면 모든 자리의 수가 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