정규표현식 반복하기


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


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



+ Recent posts