Método exec en expresiones regulares de JavaScript

El método exec realiza una búsqueda en una cadena. El resultado devuelve la subcadena encontrada y sus grupos de captura. Además, cada llamada posterior a este método comenzará la búsqueda desde el punto en el que terminó la subcadena encontrada anteriormente.

Veamos un ejemplo. Supongamos que tenemos la siguiente cadena:

javascriptlet str = '12 34 56';

Supongamos que tenemos la siguiente expresión regular:

javascriptlet reg = /\d+/g;

Llamemos secuencialmente a nuestro método para nuestra cadena:

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

Después de tres llamadas, como en nuestra cadena ya no hay más coincidencias con la expresión regular, la siguiente llamada al método devolverá null:

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

Esta particularidad del método es conveniente utilizarla en un bucle:

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

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

No solo se puede encontrar la coincidencia, sino también descomponerla en grupos de captura:

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

Se da la siguiente cadena:

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

Encuentre en ella todas las subcadenas con la hora y para cada una encontrada, descomponga las horas, minutos y segundos en grupos de captura.