This breaks down as follows:
^ //start of the line
[_A-Za-z0-9-\\+]+ // must start with
string in the bracket [ ], must contain one or more character(+)
( // start of group #1
\\.[_A-Za-z0-9-]+ // follow by a dot "." and string in the bracket [ ], must contain one or more character(+)
)* // end of group #1, this group is optional (*)
@ // must contain an "@" symbol
[A-Za-z0-9-]+ // followed by a string in the bracket [ ], must contain one or more character (+)
( // start of group #2 - first level TLD checking
\\.[A-Za-z0-9]+ // follow by a dot "." and string in the bracket [ ], must contain one or more character(+)
)* // end of group #2, this group is optional (*)
( // start of group #3 - second level TLD checking
\\.[A-Za-z]{2,} // followed by a dot "." and string in the bracket [ ], with minimum length of 2
) // end of group #3
$ // end of the line