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