자바스크립트 정규식의 exec 메소드
exec 메소드는 문자열에서 패턴을
검색합니다. 결과는 찾아낸 부분 문자열과
그 캡처 그룹입니다. 이 메소드를 연속적으로
호출할 때는 이전에 찾은 부분 문자열이
끝난 위치부터 검색을 시작합니다.
예제를 통해 살펴보겠습니다. 다음과 같은 문자열이 있습니다:
let str = '12 34 56';
다음과 같은 정규 표현식이 있습니다:
let reg = /\d+/g;
이 메소드를 문자열에 대해 순차적으로 호출해 봅시다:
let 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을 반환합니다:
let res4 = reg.exec(str);
console.log(res4); // null
이 메소드의 특성을 활용하여 반복문에 사용하기에 편리합니다:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
일치하는 부분뿐만 아니라, 캡처 그룹으로 분해하여 찾을 수도 있습니다:
let 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]
}
다음 문자열이 주어졌습니다:
let str = '12:37:57 15:48:58 17:59:59';
이 문자열에서 모든 시간 부분 문자열을 찾고, 각각에 대해 시, 분, 초를 캡처 그룹으로 분해하세요.