JavaScriptтеги регулярдуу иштегенде exec методу

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';

Анда убакыт бар бардык подсаптарды таап, ар бир табылга үчүн сааттарды, мүнөттөрдү жана секунддарды кармандарга жармаштырыңыз.