Edit:
The pure regex solution should be something along the lines of:
string words = string.Join("|", yourWordsArray);
string regex = "^(?!.*\b(" + words + ")\b.*\b(" + words + ")\b).*\b(" + words + ")\b.*$";
/Edit
What you are asking is a "find every string that has NOT > 1 matches". In .Net this is rather easy, as you can have a construction like this:
return !(Regex.Matches("your text", "your regex").Count > 1)
and your regex would be something like:`
string regex = string.Join("|", yourWordsArray);
Not the prettiest of all code, but could be worse