var myList = new List<string> { "red", "blue", "green" };
Regex r = new Regex("\\b(" + string.Join("|", myList.ToArray()) + ")\\b");
MatchCollection m = r.Matches("Alfred has a red and blue tie");
m.Count даст вам количество раз, когда красный, синий или зеленый найдены.\ b задает границу слова.
Каждый элемент m имеет тип соответствия, и вы можете посмотреть на каждый индекс, чтобы получить больше информации (т. е. m [0]. Значение дает вам соответствующие строки (красный) и m[0]. Индекс дает вам местоположение в исходной строке (13)).