자바스크립트 정규식의 exec 메소드

exec 메소드는 문자열에서 패턴을 검색합니다. 결과는 찾아낸 부분 문자열과 그 캡처 그룹입니다. 이 메소드를 연속적으로 호출할 때는 이전에 찾은 부분 문자열이 끝난 위치부터 검색을 시작합니다.

예제를 통해 살펴보겠습니다. 다음과 같은 문자열이 있습니다:

javascriptlet str = '12 34 56';

다음과 같은 정규 표현식이 있습니다:

javascriptlet reg = /\d+/g;

이 메소드를 문자열에 대해 순차적으로 호출해 봅시다:

javascriptlet res1 = reg.exec(str);
console.log(res1[0]); // 12

let res2 = reg.exec(str);
console.log(res2[0]); // 34

let res3 = reg.exec(str);
console.log(res3[0]); // 56

세 번의 호출 이후, 문자열에 정규식과 일치하는 것이 더 이상 없기 때문에, 다음 메소드 호출은 null을 반환합니다:

javascriptlet res4 = reg.exec(str);
console.log(res4); // null

이 메소드의 특성을 활용하여 반복문에 사용하기에 편리합니다:

javascriptlet str = '12 34 56';
let reg = /\d+/g;

let res;
while (res = reg.exec(str)) {
  console.log(res); // [12], [34], [56] 
}

일치하는 부분뿐만 아니라, 캡처 그룹으로 분해하여 찾을 수도 있습니다:

javascriptlet str = '12 34 56';
let reg = /(\d)(\d)/g;

let res;
while (res = reg.exec(str)) {
  console.log(res); // [12, 1, 2], [34, 3, 4], [56, 5, 6] 
}
Задание 1

다음 문자열이 주어졌습니다:

javascriptlet str = '12:37:57 15:48:58 17:59:59';

이 문자열에서 모든 시간 부분 문자열을 찾고, 각각에 대해 시, 분, 초를 캡처 그룹으로 분해하세요.