如何获取两个'{'括号'}'使用.net设置

本文关键字:设置 括号 net 使用 两个 何获取 获取 | 更新日期: 2023-09-27 18:04:19

我有一个字符串"Item Name {Item Code} {Item ID}",我想提取{}(即{Item Code})第一次出现之间的文本,我使用了

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

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

我该怎么做呢?

如何获取两个'{'括号'}'使用.net设置

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

让它变懒,它就会工作

IMHO使用这样的正则表达式:'{(.*?)'}你的正则表达式有一个无用的[^)],这与*的意义将是选择到)字符,但没有)。所以,最好使用我的正则表达式。

demo here: http://regex101.com/r/eM6iL0

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

当你有像foo {bar {baz} not match {}这样的输入时,你可能想使用{([^{}]+)}

使用regex更好,但由于您标记了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);

这里a demonstration

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