我正在看
var r = new Regex(@"\{(.*?)\}");
var m = r.Match("{abc}");
Console.WriteLine(m.Groups[0].Value);
并且它让我"{abc}"
而我希望它能在括号"abc"
之间得到这些东西。不是Value
?
另外,我不知道这是否可能,但我希望在它们嵌套的情况下得到最外面的例子,例如。
"{{abc}"
- > "{abc"
答案 0 :(得分:3)
它让我“{abc}”而我希望它能在括号之间得到这些东西,“abc”。这不是价值吗?
不,请查看Groups[1]
这是第一个匹配捕获,而Groups[0]
是整个匹配。
匹配捕获是正则表达式匹配中(...)
之间的匹配,并且是从1到n的连续顺序编号。其他项目匹配 但未捕获,并且在索引0的整个匹配中找到。
“{{abc}” - > “{ABC”
尝试{+([^}]+)}
作为+
旁边{
的模式,告诉正则表达式解析器找到{
中的一个或多个。
注意有时人们不想处理匹配捕获索引,然后可以使用命名匹配捕获,例如这个文字示例:
{+(?<TextBetweenTheBrackets>[^}]+)}
然后将括号之间的值提取为
Groups["TextBetweenTheBrackets"].value