Specifies there is a pattern within. I've also seen #'s use, but / being more common.

This looks for the text "(BF2:11)". Regex uses things like hypens, parenthesis, and backslashes for its syntax. As such, the parenthesis must be escaped using a backslash (same for hyphen, etc.)


The [] are grouping brackets, and specify to look for "items contained within", meaning "in these braces are the only characters you should be looking for". The : was a possible character, and so was a space (the \s represents space characters). The trailing * means is may or may not be present. You could also use + to represent there must be atleast one of these characters.

The outer parenthesis specify this is a group we are looking for, and the contained items will be the value of our $regml result(s).

The inner parenthesis (because the first characters are "?:") are non-grouping. Don't seperate this set of parethesis off as its own return value, only use it for sake of containment. And what is it containing? The pattern for <number><space> (\d is digit, \s is again space). The +'s (as i mentioned) mean 1 or more. This set of parenthesis are trailed by another plus meaning repeat this pattern; look for a string of <number><space>.

The i flag stands for case-insensitive. mainly for the BF found in the pattern.