(?i)applies the following effective flags to the remainder of the pattern: gmi i modifier: insensitive. Matches without distinguishing uppercase and lowercase letters
Negative Lookbehind(?<!\d) \da Unicode decimal digit
Non-Capturing Group(?:1[0-2]|0?[1-9]) 1the literal 1 (4910 / 618 / 3116)
0-2one character from 0 (4810) to 2 (5010)
0?optionally matches the literal 0 (4810 / 608 / 3016)
1-9one character from 1 (4910) to 9 (5710)
Non-Capturing Group(?::(?:[0-5][0-9]))? ?repeats the group contents below at most once:
:the literal : (5810 / 728 / 3A16)
Non-Capturing Group(?:[0-5][0-9]) 0-5one character from 0 (4810) to 5 (5310)
0-9one character from 0 (4810) to 9 (5710)
\s?optionally matches a Unicode whitespace character
athe literal a (9710 / 1418 / 6116) (case insensitive)
pthe literal p (11210 / 1608 / 7016) (case insensitive)
mthe literal m (10910 / 1558 / 6D16) (case insensitive)
\s*a Unicode whitespace character, repeated any number of times
-the literal - (4510 / 558 / 2D16)
\s*a Unicode whitespace character, repeated any number of times
Non-Capturing Group(?:1[0-2]|0?[1-9]) 1the literal 1 (4910 / 618 / 3116)
0-2one character from 0 (4810) to 2 (5010)
0?optionally matches the literal 0 (4810 / 608 / 3016)
1-9one character from 1 (4910) to 9 (5710)
Non-Capturing Group(?::(?:[0-5][0-9]))? ?repeats the group contents below at most once:
:the literal : (5810 / 728 / 3A16)
Non-Capturing Group(?:[0-5][0-9]) 0-5one character from 0 (4810) to 5 (5310)
0-9one character from 0 (4810) to 9 (5710)
\s?optionally matches a Unicode whitespace character
athe literal a (9710 / 1418 / 6116) (case insensitive)
pthe literal p (11210 / 1608 / 7016) (case insensitive)
mthe literal m (10910 / 1558 / 6D16) (case insensitive)
\ba Unicode word boundary
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