CoolCodeClue

[]

The content of [] will match all individual elements. For [ab] it will match both a and b, one of them

()

When we enclose the expression in (), we create a group. Whatever matches inside will be thrown into the group. All groups are returned separately.

(?<name> expression)

If we put ?<name> at the beginning of the group, then name will be the name of this group (?<name> expression)