C# 正则表达式捕获获得两个结果,而不是一个

本文关键字:一个 结果 正则表达式 两个 | 更新日期: 2023-09-27 18:37:13

我想检查URL是否与以下模式匹配:http://the.site.com/some/path/1234567,同时从中提取最后一个数字。

如果我这样做:

Match m = Regex.Match(url, "^http://the.site.com/some/path/(?<picid>.*?)$");
if (m.Success)
{
    log(string.Format("New download. Id={0}", m.Groups["picid"].Value));
}

它返回 2 个组。一个包含http://the.site.com/some/path/1234567,另一个包含1234567。如何更改正则表达式以仅获得一次捕获 - 数字?

C# 正则表达式捕获获得两个结果,而不是一个

您可以使用正则表达式标志 RegexOptions.ExplicitCapture

用法:

Regex.Match(url, "^http://the.site.com/some/path/(?<picid>.*?)$", RegexOptions.ExplicitCapture);

在您的示例中,您需要检查字符串是否匹配并从示例中的字符串中获取最后一个数字是 7 这样做:

            Match m = Regex.Match(url, @"^http://the.site.com/some/path/'d+$");
            if (m.Success)
            {
                int y = int.Parse(m.Value[m.Value.Length - 1].ToString());
            }

以下正则表达式应仅捕获数字...

(?<=http://the.site.com/some/path/)(?<picid>.*?)$