C# 如何获取正则表达式捕获组的值?

C# 如何获取正则表达式捕获组的值?,c#,regex,C#,Regex,首先,我对这一点很抱歉。我不知道怎么解释。 这是我的代码: string sString = @"docs/horaires/1/images/1" var PickImage = Regex.Matches(sString, "/horaires/(.*?)/images/"); Console.WriteLine(PickImage[0].Value); 这将打印/horaires/1/images/,而不是1。我尝试了所有的RegexOptions,但没有找到解决方案。 我做错了什么?这

首先,我对这一点很抱歉。我不知道怎么解释。 这是我的代码:

string sString = @"docs/horaires/1/images/1"
var PickImage = Regex.Matches(sString, "/horaires/(.*?)/images/");
Console.WriteLine(PickImage[0].Value);
这将打印
/horaires/1/images/
,而不是
1
。我尝试了所有的
RegexOptions
,但没有找到解决方案。 我做错了什么?

这就是您需要的:

string sString = @"docs/horaires/1/images/1";
var pickImage = Regex.Match(sString, @"/horaires/(.*?)/images/");

if (pickImage.Success)
    Console.WriteLine(pickImage.Groups[1].Value);
在原始代码中,
PickImage[0]
是一个
Match
对象,并且
Value
将返回完全匹配。您需要第一个捕获的组,因此请使用
match.Groups[1].Value
。请注意,
组[0]
始终包含完全匹配项


无需使用
Matches
如果您想要单一结果,请使用
Match
代替。

使用
PickImage[0]。组[1]。值
我本来打算将标题中的“patter”改为“pattern”,但已经有一篇文章具有相同的标题。@B.ClayShannon然后您可以尝试找到一个更好的标题-我就是这么做的。