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

时间:2013-10-29 13:17:08

标签: c# regex

我想检查网址是否与以下模式匹配: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。如何更改正则表达式只获得一次捕获 - 数字?

3 个答案:

答案 0 :(得分:4)

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

用法:

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

答案 1 :(得分:0)

根据您的示例,您需要检查字符串是否匹配并从示例中的字符串中获取最后一位数字是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());
            }

答案 2 :(得分:0)

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

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