Metoda exec w wyrażeniach regularnych JavaScript

Metoda exec wykonuje wyszukiwanie w ciągu znaków. Wynikiem jest znaleziony podciąg i jego grupy przechwytujące. Przy tym każde kolejne wywołanie tej metody zacznie wyszukiwanie od miejsca, w którym zakończył się poprzedni znaleziony podciąg.

Spójrzmy na przykład. Załóżmy, że mamy następujący ciąg znaków:

javascriptlet str = '12 34 56';

Załóżmy, że mamy następujące wyrażenie regularne:

javascriptlet reg = /\d+/g;

Wywołujmy sekwencyjnie naszą metodę dla naszego ciągu znaków:

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

Po trzech wywołaniach, ponieważ w naszym ciągu znaków nie ma już więcej dopasowań do wyrażenia regularnego, następne wywołanie metody zwróci null:

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

Tę cechę metody wygodnie jest wykorzystać w pętli:

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

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

Można znaleźć nie tylko dopasowanie, ale i rozłożyć je na grupy przechwytujące:

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

Dany jest następujący ciąg znaków:

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

Znajdź w nim wszystkie podciągi z czasem i dla każdego znalezionego rozłóż godziny, minuty i sekundy na grupy przechwytujące.