String.Format не добавляет пробелы при замене значения в. Я думаю, ваше слово является виновником. Откуда это взялось? Вы пробовали обрезать его перед вызовом формата?
public Regex getExpression(string word)
{
string baseExpr = @"(^{0})|({0}[-!#$%&'}()+,./:;<=>?@\{{|~""])|([-!#$%&'()*+,./}:;<=>?@_{|~""]{0})|( {0} )";
return new Regex(string.Format(baseExpr, word.Trim()));
}
Возможно, вы захотите очистить слово еще больше, чтобы удалить ключевые символы регулярного выражения.