如何获取正则表达式捕获组的值? [复制]

Posted

技术标签:

【中文标题】如何获取正则表达式捕获组的值? [复制]【英文标题】:How to get the value of a regex capture group? [duplicate] 【发布时间】:2016-02-28 22:29:35 【问题描述】:

首先对标题感到抱歉。不知道怎么解释。 这是我的代码:

string sString = @"docs/horaires/1/images/1"
var PickImage = Regex.Matches(sString, "/horaires/(.*?)/images/");
Console.WriteLine(PickImage[0].Value);

这将打印/horaires/1/images/ 而不是1。我尝试了所有RegexOptions,但没有找到解决方案。 我在这里做错了什么?

【问题讨论】:

使用PickImage[0].Groups[1].Value 我本来想把标题中的“patter”改成“pattern”,但是已经有同标题的帖子了。 @B.ClayShannon 那么你可以试着找一个更好的标题——我就是这么做的。 【参考方案1】:

这是你需要的:

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。请注意,Groups[0] 始终包含完整匹配项。

无需使用Matches,如果您想要一个结果,请改用Match

【讨论】:

以上是关于如何获取正则表达式捕获组的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将排除捕获组的正则表达式

用于捕获组的正则表达式无法识别

具有多个捕获组的 R 中的正则表达式组捕获

正则表达式:捕获重复捕获组的所有单个实例 [重复]

[javascript] 获取正则子表达式里的内容

正则表达式:如何访问一个组的多个匹配项? [复制]