我的正则表达式上的string.Format给了我空格来代替花括号?

时间:2009-06-04 14:05:36

标签: c# regex

我在String.Format(c#)之后的正则表达式:

  

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

当正则表达式通过调试器时,它看起来像这样:

  

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

我的string.format的花括号已被空格替换,这显然打破了我的正则表达式。有谁知道如何解决这个问题??

1 个答案:

答案 0 :(得分:4)

String.Format在替换值时不会添加空格。我的猜测是你的单词是罪魁祸首。它从何而来?您是否在格式调用之前尝试修剪它?

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

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

你可能想要更清楚这个词以消除关键的正则表达式字符。