为什么这不是括号之间的东西?

时间:2016-07-22 21:55:07

标签: c# regex

我正在看

var r = new Regex(@"\{(.*?)\}");
var m = r.Match("{abc}");
Console.WriteLine(m.Groups[0].Value);

并且它让我"{abc}"而我希望它能在括号"abc"之间得到这些东西。不是Value

另外,我不知道这是否可能,但我希望在它们嵌套的情况下得到最外面的例子,例如。

"{{abc}" - > "{abc"

1 个答案:

答案 0 :(得分:3)

  

它让我“{abc}”而我希望它能在括号之间得到这些东西,“abc”。这不是价值吗?

不,请查看Groups[1]这是第一个匹配捕获,而Groups[0]是整个匹配。

匹配捕获是正则表达式匹配中(...)之间的匹配,并且是从1到n的连续顺序编号。其他项目匹配 但未捕获,并且在索引0的整个匹配中找到。

  

“{{abc}” - > “{ABC”

尝试{+([^}]+)}作为+旁边{的模式,告诉正则表达式解析器找到{中的一个或多个。

注意有时人们不想处理匹配捕获索引,然后可以使用命名匹配捕获,例如这个文字示例:

{+(?<TextBetweenTheBrackets>[^}]+)}

然后将括号之间的值提取为

Groups["TextBetweenTheBrackets"].value