Wow dude, thats pretty amazing.
I tested it a bit, and its almost working.

Bit of a re-write of your code (for me to understand):
Code:
on *:TEXT:*:#channel:{
  var %string = $1-
  if ($regex(%string,/^(.*)([0-9][0-9]?):([0-9][0-9]?):([0-9][0-9]?)(.*)([0-9][0-9]?):([0-9][0-9]?):([0-9][0-9]?)(.*)$/)) {
    var %m.1 = $regml(1)
    var %m.2 = $regml(2)
    var %m.3 = $regml(3)
    var %m.4 = $regml(4)
    var %m.5 = $regml(5)
    var %m.6 = $regml(6)
    var %m.7 = $regml(7)
    var %m.8 = $regml(8)
    var %m.9 = $regml(9)

    var %m.2-4 = $+(%m.2,:,%m.3,:,%m.4)
    var %m.6-8 = $+(%m.6,:,%m.7,:,%m.8)

    msg $chan 1st set is %m.2-4
    msg $chan 2nd set is %m.6-8
  }
}


At the moment, the problem is that it won't recognise a double digit for the first part of the pattern, so the %m.2 and %m.6 part I guess?

00:00:00 returns 0:00:00 and should return 00:00:00
00:0:0 returns 0:0:0 and should return 00:0:0
00:00:0 returns 0:00:0 and should return 00:00:0

Any idea's on how to fix this??

Thanks for helping man, really appreciated.