Regular expressions are always 'delimited' by a character, to define where the pattern starts and where it stops. The delimiter can be anything as long as you don't mix it up with the pattern itself. It is most common to use the forward slash, but any character will do. This person chose the '!'.
(.*?)
. = any character
* = zero or more times
? = non-greedy, may not include whatever is next in the pattern
() = make this a block, whatever is in here is treated as one statement. This means you can difine how many times it should be repeated, and you can reference it again later using the 'backslash blackslash one' method.
"Does the next code gives the same result if you don't want the (.*?) option?"
Try it and see.... :-)