2013-06-29 11 views
8

前に正規表現を使用したことはありません。私はフォーラムで似たような質問を見ていましたが、探しているものが正確ではありません中括弧の間の値を取得するC#

私は以下のような文字列を持っています。

例中括弧の間の値を取得する必要があります:「{} name}{[email protected]

と私は、次の分割さの文字列を取得する必要があります。

名と[email protected]

私は次のことを試してみました、それは同じ文字列を私に戻っています。ここ

string s = "{name}{[email protected]}"; 
string pattern = "({})"; 
string[] result = Regex.Split(s, pattern); 
+0

これは正規表現のhttpを学ぶ/正規表現パターンを作成するための非常に優れたツールです:// gskinner.com/RegExr/ –

答えて

16

行きますか?この特定の例では私が書くでしょう:

s.Split(new char[] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries) 
+0

@FabianBigler私はregexが簡単にこれを達成できるという印象を受けていたので、タイトルにRegexを含めました。 – Kurubaran

+0

提案された解決法は、 'string s =" }name {[email protected] ";'のような文字列を正しいものとしないでしょうか? – Josep

+0

私は投票に時間がかかりすぎました...この解決法は答えを提供しません。入力文字列:{name} blabla{[email protected]}を考えてみると、配列に "blabla"もあります。 – Jurion

0

あなたは必見正規表現を使用している

string s = "{name}{[email protected]}"; 
s = s.Substring(1, s.Length - 2);// remove first and last characters 
string pattern = "}{";// split pattern "}{" 
string[] result = Regex.Split(s, pattern); 

または

string s = "{name}{[email protected]}"; 
s = s.TrimStart('{'); 
s = s.TrimEnd('}'); 
string pattern = "}{"; 
string[] result = Regex.Split(s, pattern); 
+0

これは動作しますが、部分文字列を使用せずにRegexパターンを使用するだけでこの結果を得る方法はありますか? – Kurubaran

+0

サブストリングなしの回答方法2を更新しました –

+0

他の文字列操作を行わずに正規表現パターンのみでrsultを取得することができたかどうか疑問に思っていますか? – Kurubaran

23

RegexではなくSplitの使用Matchesは簡単にこれを達成するために:

string input = "{name}{[email protected]}"; 
var regex = new Regex("{.*?}"); 
var matches = regex.Matches(input); //your matches: name, [email protected] 
foreach (var match in matches) // e.g. you can loop through your matches like this 
{ 
    //yourmatch 
} 
+0

アップに投票しました: – Kurubaran

+0

@Coder Ok cheers! –

関連する問題