(Sam*.Cook) works properly except Sam and Cook have to be in that order so I have to use (Sam*.Cook)|((Cook*.Sam). Can someone experienced in regular expressions explain the functions of "()", "*", "." and especially "*." (I understand | = or). I've looked in several books and/or reference guides on regular expressions but really can't get it into my head how (Sam*.Cook) functions (I guess I need a "grade school level" explanation.

Edit:
Why does Rescan Topic with "Crange" or "(Crange)" give one match but the same Rescan Topic with "(Sam*.Cook)|(Cook*.Sam)|(Crange)" shows no matches???