Метад exec у рэгулярках JavaScript

Метад 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

Пасля трох вызаваў, так як у нашiм радку больш няма супадзенняў з рэгуляркай, то наступны вызаў метаду верне 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';

Знайдзіце ў ёй усе подстрокі з часам і для кожнага знойдзенага разлажыце гадзіны, хвіліны і секунды па карманах.