string.Format в моем регулярном выражении дает мне пробелы вместо фигурных скобок? - PullRequest
0 голосов
/ 04 июня 2009

Мое регулярное выражение после String.Format (c #):

(^ {0}) | ({0} [! - # $% & '} () * +, / :; <=> @ _ \{{|~"])|([-!#$%&'()*+,./}:;<=>?@_.? {| ~ "] {0}) | ({0})

Когда регулярное выражение проходит через отладчик, оно выглядит так:

(^ Word) | (Word [-! # $% & '} () * +,. / :; <=>? @ _ \{|~"])|([-!#$%&'()*+,./}:;<=>?@_ {| ~ "] Word) | (Word)

Фигурные скобки для моего string.format были заменены пробелами, что явно нарушает мое регулярное выражение. Кто-нибудь знает, как решить эту проблему ??

1 Ответ

4 голосов
/ 04 июня 2009

String.Format не добавляет пробелы при замене значения в. Я думаю, ваше слово является виновником. Откуда это взялось? Вы пробовали обрезать его перед вызовом формата?

public Regex getExpression(string word)
{
    string baseExpr = @"(^{0})|({0}[-!#$%&'}()+,./:;<=>?@\{{|~""])|([-!#$%&'()*+,./}:;<=>?@_{|~""]{0})|( {0} )";

    return new Regex(string.Format(baseExpr, word.Trim()));
}

Возможно, вы захотите очистить слово еще больше, чтобы удалить ключевые символы регулярного выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...