Регулярные выражения были бы плохим выбором «инструментов» для решения этой проблемы. Возможно, может сработать следующее:
HashSet<string> corpus = new HashSet<string>();
char[] split = new char[] { ' ', '\t', '\r', '\n', '.', ';', ',', ':', ... };
foreach (string line in inputLines)
{
string[] parts = line.Split(split, StringSplitOptions.RemoveEmptyEntries);
foreach (string part in parts)
{
corpus.Add(part.ToUpperInvariant());
}
}
// 'corpus' now contains all of the unique tokens
РЕДАКТИРОВАТЬ: Это я делаю большое предположение, что вы "лексуете" для какого-то анализа, например поиска.