C# 正则表达式提取两个delimeter之间的字符串而不返回delimeter?

C# 正则表达式提取两个delimeter之间的字符串而不返回delimeter?,c#,C#,我只想提取括号之间的文本,而不是括号 我的代码当前如下所示: var source = "Harley, J. Jesse Dead Game (2009) [Guard]" // Extract role with regex m = Regex.Match(source, @"\[(.*)\]"); var role = m.Groups[0].Value; // role is now "[Guard]" role = role.Substring(1, role.Length-

我只想提取括号之间的文本,而不是括号

我的代码当前如下所示:

var source = "Harley, J. Jesse  Dead Game (2009)  [Guard]"

// Extract role with regex

m = Regex.Match(source, @"\[(.*)\]");
var role = m.Groups[0].Value;
// role is now "[Guard]"

role = role.Substring(1, role.Length-2);
// role is now "Guard"

你能帮我把它简化为一个正则表达式,而不是正则表达式,然后是子字符串吗

您使用不同的组号。每次用()包装某些内容时,它都会从中创建一个新的组。组零是找到的整个表达式。group1是()的第一个组,group2是第二个组,等等。因为您使用的是组0,所以它将返回与表达式匹配的整个字符串


尝试将组[x]更改为1,看看它能给您带来什么。

您可以使用零宽度的前向(
?=
)和后向(
)?
m = Regex.Match(source, @"(?<=\[).*(?=\])");
var role = m.Value;