2009-06-04 8 views
0

私String.Formatの後に正規表現(C#の):私の正規表現のstring.Formatは中括弧の代わりに空白を与えていますか?

(^ {0})|({0} [ - の#$%&「}()* +、/ :; < =!。 > @_ \{{|~"])|([-!#$%&'()*+,./}:;<=>[email protected]_ {|〜 "] {0})|({0})

正規表現は、デバッガを通じて来ているとき、それは次のようになります?

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

私のstring.formatの中括弧はスペースで置き換えられています。これは明らかに私の正規表現を破壊します。誰もがこの問題を解決する方法を知っていますか?

+0

string.Formatに渡す文字列の周囲にスペースがないことを100%確信していますか? – Grzenio

+0

コードスニペットを投稿できますか?あなたが記述している動作はあまりにも奇妙です、おそらく単純な間違いをしています... –

+0

はい、完全なstring.format呼び出しを追加できますか? –

答えて

4

String.Formatは値を代入するときに空白を追加しません。私の推測はあなたの言葉が原因です。それはどこから来たのですか?あなたはフォーマットコールの前にトリミングを試みましたか?

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

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

キーの正規表現文字を除外するために、さらに多くの単語を消毒することができます。

+0

+1私は、トリムされていない文字列が原因だと思います。 –

+0

コードサンプルがstring.Format()呼び出しでFormatExceptionでクラッシュします。 – Kevin

+0

私はちょうど彼の表現を逐語的にコピーし、 "文字を構文強調表示に追加しました。"すべての{文字を正しくエスケープしていないように見える –

関連する問題