the literal (3210 / 408 / 2016)
3rd Alternative — matches an empty string
\d{1,2}a digit, repeated between 1 and 2 times
Non-Capturing Group(?:[.:](\d\d))* *repeats the group contents below any number of times:
.the literal . (4610 / 568 / 2E16)
:the literal : (5810 / 728 / 3A16)
\s*any whitespace character, repeated any number of times
Group 3([aApP][.: ]?[mM][.: ]?|o['’]clock|afternoon)* *repeats the group contents below any number of times:
1st Alternative[aApP][.: ]?[mM][.: ]? athe literal a (9710 / 1418 / 6116) (case sensitive)
Athe literal A (6510 / 1018 / 4116) (case sensitive)
pthe literal p (11210 / 1608 / 7016) (case sensitive)
Pthe literal P (8010 / 1208 / 5016) (case sensitive)
?matches at most one character from the set below:
.the literal . (4610 / 568 / 2E16)
:the literal : (5810 / 728 / 3A16)
the literal (3210 / 408 / 2016)
mthe literal m (10910 / 1558 / 6D16) (case sensitive)
Mthe literal M (7710 / 1158 / 4D16) (case sensitive)
?matches at most one character from the set below:
.the literal . (4610 / 568 / 2E16)
:the literal : (5810 / 728 / 3A16)
the literal (3210 / 408 / 2016)
2nd Alternativeo['’]clock othe literal o (11110 / 1578 / 6F16) (case sensitive)
'the literal ' (3910 / 478 / 2716)
’the literal ’ (821710 / 200318 / 201916)
clockthe literal text clock (case sensitive) afternoonthe literal text afternoon (case sensitive) \s*any whitespace character, repeated any number of times
PSTthe literal text PST (case sensitive) g modifier: global. Finds all matches instead of stopping after the first
m modifier: multiline. Causes ^ and $ to match the start and end of each line, not only the start and end of the string