정규표현식 반복하기
주민등록번호를 정규표현식으로 나타내려면 어떻게 해야 할까?
주민등록번호는 엄밀하게 말하면 모든 자리의 수가 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\}에서 min을 0으로 할 경우 반복이 전혀 없는 경우도 해당된다.
[0-9]\{0,max\} → 숫자가 0번 이상 max 이하 반복되므로 숫자가 전혀 없는 경우도 해당됨
\{min,max\}에서 max를 생략할 경우 반복 횟수에 제한이 없어진다. 따라서
* → \{0,\}과 동일하다.
\+ → \{1,\}과 동일하다.
Anki 파일
아래는 본 포스팅의 내용을 갈무리하기 위한 Anki 파일입니다. 참고하시기 바랍니다.
'Anki로 공부하기 > vi 또는 vim 익히기' 카테고리의 다른 글
035 vim의 정규표현식(8) POSIX 문자 클래스 1 (0) | 2018.06.18 |
---|---|
034 vim의 정규표현식(7) 몇 가지 예제들 (0) | 2018.06.17 |
032 vim의 정규표현식(6) 특수 문자 (0) | 2018.06.14 |
031 vim의 정규표현식(5) or (0) | 2018.06.13 |
030 vim의 정규표현식(4) 문자열의 위치 (1) | 2018.06.12 |