Мне нужно сохранить слова только с буквенно-цифровыми символами, дефисами и апострофами. У меня есть все, кроме апострофов в настоящее время. Апостроф в таких словах, как не, не и не удаляется с помощью этого кода:
Regex onlyAlphanumericAndDash = new Regex("[^a-zA-Z0-9 -]");
. . .
foreach (string line in doc1StrArray) // doc1StrArray populated in FindAndStorePhrasesFoundInBothDocs()
{
trimmedLine = line;
// first replace the "long dash" with a space (otherwise the dashed words run together:
// "consecrated—we" becomes "consecratedwe"
trimmedLine = trimmedLine.Replace("—", " ");
trimmedLine = onlyAlphanumericAndDash.Replace(trimmedLine, "");
string[] subLines = trimmedLine.Split();
foreach (string whirred in subLines)
{
if (String.IsNullOrEmpty(whirred)) continue;
_whirred = whirred.Trim();
iWordsInDoc1++;
slAllDoc1Words.Add(_whirred);
if (IgnoreWord(_whirred)) continue;
InsertIntoWordStatsTable(_whirred, 1, 0);
}
}
Мне нужно сохранить апострофы, но только когда они внутри слова. Другими словами, апострофы в конце слова должны быть обрезаны, а также в начале (когда это одинарная кавычка); но апострофы внутри слова — другими словами, те, которые указывают на сокращения, которых не было — должны быть сохранены.
Что мне нужно добавить в регулярное выражение или как мне нужно изменить его, чтобы выполнить это?