如何获得位于两个'括号n#39;}'之间的一串文字。使用.NET设置?

时间:2014-05-21 10:50:57

标签: c# regex string substring

我有一个字符串"Item Name {Item Code} {Item ID}",我希望在第一次出现{}{Item Code}之间提取文字, 我用了

  

Regex.Match( "Item Name {Item Code} {Item ID}", @"\{([^)]*)\}").Groups[0].Value

但我得到了"{Item Code} {Item ID}"

我该怎么做?

3 个答案:

答案 0 :(得分:3)

\{([^)]*?)\}")

让它变得懒惰,它会起作用

恕我直言使用这样的正则表达式:\{(.*?)\}你的正则表达式有一个无用的[^)],这个和*的含义是选择)字符,但没有)。所以,最好用我的正则表达式。

演示:http://regex101.com/r/eM6iL0

答案 1 :(得分:2)

应该是{([^}]*)}。不是字符类中的),而是}。含义,匹配除{(1}}之外的所有内容。

当您输入}时,可能需要使用{([^{}]+)}

答案 2 :(得分:0)

使用正则表达式会更好但是因为您使用substring标记了,所以就是这样;

string s = "Item Name {Item Code} {Item ID}";
int index1 = s.IndexOf('{');
int index2 = s.IndexOf('}') ;
string result = s.Substring(index1 + 1, index2 - index1 - 1);
Console.WriteLine(result);

这里有 demonstration

IndexOf method获取指定字符第一次出现的索引。