Regex method uses comma, full stop, hyphen, and apostrophe as word separators. The problem with this is that these characters are not universally used as separators. The hyphen is used to join two words. Could I suggest the following?
string input = "Mr O'Brien-Smith arrived at 8.30 and spent \t $1,000.99";
string words= input.Split(default(Char), StringSplitOptions.RemoveEmptyEntries);
This gives 8 as the number of words.
Regex returns 13 matches.