^start of string
Group weeks(?<weeks>\d{1,2}) \d{1,2}a digit, repeated between 1 and 2 times
wthe literal w (11910 / 1678 / 7716) (case insensitive)
\sany whitespace character
Group days(?<days>0?[0-6]) 0?optionally matches the literal 0 (4810 / 608 / 3016)
0-6one character from 0 (4810) to 6 (5410)
dthe literal d (10010 / 1448 / 6416) (case insensitive)
\sany whitespace character
Group hours(?<hours>(?:0?|1|2(?=[0-3]))\d) Non-Capturing Group(?:0?|1|2(?=[0-3])) 0?optionally matches the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
3rd Alternative2(?=[0-3]) 2the literal 2 (5010 / 628 / 3216)
Positive Lookahead(?=[0-3]) 0-3one character from 0 (4810) to 3 (5110)
\da digit
hthe literal h (10410 / 1508 / 6816) (case insensitive)
\sany whitespace character
Group minutes(?<minutes>(?:0?|[1-5])\d) Non-Capturing Group(?:0?|[1-5]) 0?optionally matches the literal 0 (4810 / 608 / 3016)
1-5one character from 1 (4910) to 5 (5310)
\da digit
mthe literal m (10910 / 1558 / 6D16) (case insensitive)
$end of string
i modifier: insensitive. Matches without distinguishing uppercase and lowercase letters