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

Након три позива, пошто у нашој нисци више нема поклапања са регуларним изразом, следећи позив метода ће вратити 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';

Пронађите у њој све подстрингове са временом и за сваки пронађени расподелите сате, минуте и секунде по групама (карманима).