2012-02-23 17 views
1

%で始まる単語を置き換える必要があります。正規表現分割と置換

私に{ brand, productName }を与えるだろう%で初めの単語に分割することを望んでWelcome to home | %brand %productName

たとえば。

私の正規表現は平均よりも小さいので、これを参考にしていただければ幸いです。

+0

を使用すると、%ブランド%を使用した場合それは容易になるだろう%productName% – Christophe

+0

"brand"と "productName"だけを含む配列を取得しようとしているのですか?そうであれば、これらの単語を置き換えようとしていますか? –

+0

あなたが望む解決策があれば、答えをマークして忘れることはありません –

答えて

1

のstring.Splitアプローチと間違って何も、あなたの心が、ここでは正規表現のアプローチがあります:

string input = @"Welcome to home | %brand %productName"; 
      string pattern = @"%\S+"; 
      var matches = Regex.Matches(input, pattern); 
      string result = string.Empty; 
      for (int i = 0; i < matches.Count; i++) 
      { 
       result += "match " + i + ",value:" + matches[i].Value + "\n"; 
      } 
      Console.WriteLine(result); 
+0

これは私が探していたことに感謝しています。私の正規表現をブラッシュアップする必要があります。私は以前にstring.splitアプローチを使用しましたが、あまり煩雑な方法を探していました。再度、感謝します – Christo

0

これを試してみてください:

(?<=%)\w+ 

これはすぐにパーセント記号が先行する単語文字の任意の組み合わせを探します。

検索を行うと、これらの一致に置き換えている場合さて、あなたはおそらく、あなたが後読みグループを削除し、ちょうどこれを持っている必要があると思いますので、同様に%記号を削除したいと思う:

%\w+ 

しかし、そうすることで、置換コードは単語を単独で取得するために、各一致の%記号を切り捨てる必要があります。

+3

グループを照合し、必要なものを置き換えるには '%(\ w +)'を使用できます。 –

2

コードはあなたを助けるないかもしれない次のとおりです。

string[] splits = "Welcome to home | %brand %productName".Split(' '); 
List<string> lstdata = new List<string>(); 
for(i=0;i<splits.length;i++) 
{ 
    if(splits[i].StartsWith("%")) 
    lstdata.Add(splits[i].Replace('%','')); 
}