Group YEAR(?P<YEAR>[\d]{4}) {4}matches exactly 4 characters from the set below:
\da Unicode decimal digit
-the literal - (4510 / 558 / 2D16)
Group MONTH(?P<MONTH>([0][1-9])|([1][0-2])) 1st Alternative([0][1-9]) 0the literal 0 (4810 / 608 / 3016)
1-9one character from 1 (4910) to 9 (5710)
2nd Alternative([1][0-2]) 1the literal 1 (4910 / 618 / 3116)
0-2one character from 0 (4810) to 2 (5010)
-the literal - (4510 / 558 / 2D16)
Group DAY(?P<DAY>([0][1-9])|([12][0-9])|([3][01])) 1st Alternative([0][1-9]) 0the literal 0 (4810 / 608 / 3016)
1-9one character from 1 (4910) to 9 (5710)
2nd Alternative([12][0-9]) 1the literal 1 (4910 / 618 / 3116)
2the literal 2 (5010 / 628 / 3216)
0-9one character from 0 (4810) to 9 (5710)
3the literal 3 (5110 / 638 / 3316)
0the literal 0 (4810 / 608 / 3016)
1the literal 1 (4910 / 618 / 3116)
Tthe literal T (8410 / 1248 / 5416) (case sensitive)
Group HOUR(?P<HOUR>([01][0-9])|([2][0-3])) 1st Alternative([01][0-9]) 2nd Alternative([2][0-3]) :the literal : (5810 / 728 / 3A16)
Group MINUTES(?P<MINUTES>([0-5][0-9])) :the literal : (5810 / 728 / 3A16)
Group SECONDS(?P<SECONDS>([0-5][0-9])) .any Unicode character (except for line terminators)
Group MILLIS(?P<MILLIS>[0-9]{3}) Zthe literal Z (9010 / 1328 / 5A16) (case sensitive)
g modifier: global. Finds all matches instead of stopping after the first