the stuff between the # is the pattern to match against
the ismU at the end is the modifiers so
i = case insensitive
s = matches all characters, including newlines. Without it, newlines are excluded
m = treats the subject string as consisting of a single "line" of characters even if it actually contains several newlines
U = sets the regex to be non greedy by default
<<(.*)>>
is the actual pattern its self which I believe pulls out everything in the input text between << >>
So if you passed a text string this is some <<strong>>test</strong> code
to the match it would return an array containing strong in it as strong is inside the << >> brackets