Metode exec JavaScript regulārajās izteiksmēs

Metode exec veic meklēšanu virknē. Tās rezultāts atgriež atrasto apakšvirkni un tās capture groups (kabatas). Turklāt katra nākamā šīs metodes izsaukšana sāks meklēšanu no tās vietas, kurā beidzās iepriekšējā atrastā apakšvirkne.

Apskatīsim piemērā. Pieņemsim, ka mums ir šāda virkne:

javascriptlet str = '12 34 56';

Pieņemsim, ka mums ir šāda regulārā izteiksme:

javascriptlet reg = /\d+/g;

Izsauksim mūsu metodi secīgi mūsu virknei:

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

Pēc trim izsaukumiem, tā kā mūsu virknē vairs nav atbilstību ar regulāro izteiksmi, tad nākamais metodes izsaukums atgriezīs null:

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

Šo metodes īpatnību ir ērti izmantot ciklā:

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

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

Var atrast ne tikai atbilstību, bet arī to sadalīt capture groups (kabatas):

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

Dota šāda virkne:

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

Atrast tajā visas apakšvirknes ar laiku un katrai atrastajai sadaliet stundas, minūtes un sekundes capture groups (kabatas).