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.
If we put ?<name> at the beginning of the group, then name will be the name of this group (?<name> expression)