2016-07-28 13 views
1

I持つダブルブラケットの四角内の単語と一致して、次の正規表現、:正規表現は、二重の角括弧で正確な言葉に合わせて

@"(?<=\[\[)[^]]+(?=\])"  

問題:私は入力に置き換えたい

[[Hello]] -> Foo 
[[HelloWorld]] -> Bar 

コード次のとおりです:

message = message.Replace(match.Value, value.ToString()); 
message = Regex.Replace(message, @"[\[\]']+", ""); 

出力では、私はFooWorldを受け取ります。正規表現を修正してFooとBarを取得する方法はありますか?

+1

ただ 'message = message.Replace(" [["、" ")' uldで十分です。 –

+0

置き換えなくても、 '[['と ']]'の中のすべての文字列を収集することを確認してください。私の場合は、*問題:入力に置き換えたい*この質問は[[[]] '*で囲まれた文字列内のキーを見つけることとなる*(http://stackoverflow.com/questions/38030692/finding- keys-in-string-enclosed-with)。 –

+0

上記の答えは*抽出*の解決法を提供するので、これは*置き換え* 1を必要とするので、質問を再開する必要があります。 –

答えて

1

あなたの正規表現@"(?<=\[\[)[^]]+(?=\])"試合1+ ]以外の文字を[[で先行し、]に従った場合。実際には[[x x x]]のような文字列とは一致しません。 [[x y ] bracket ]]のような文字列には一致しません。

あなたは@"\[\[(.*?)]]"正規表現(RegexOptions.Singlelineフラグを使用)で必要なものを達成できる、と$1に置き換え:

message = Regex.Replace("[[Hello]]", @"\[\[(.*?)]]", "$1")); 

があなたの現在の要件(またはその欠如)与えられた、しかしIDEONE demo

を参照してください。あなただけが使うことができます

message = message.Replace("[[", "").Replace("]]", ""); 
関連する問題