【问题标题】: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 那么你可以试着找一个更好的标题——我就是这么做的。

标签: c# regex


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2011-03-11
    • 2017-01-07
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多