针对特定网址格式的正则表达式

时间:2009-09-07 16:41:16

标签: c# .net regex

在C#中,我如何捕获URL中的整数值,如:

/someBlah/a/3434/b/232/999.aspx

我需要从上面的网址获取999值。 网址中包含/someBlah/。 所有其他值如a/3434/b/232/可以是任何字符/数字。

我可以逃脱'/'吗?

4 个答案:

答案 0 :(得分:4)

尝试以下

var match = Regex.Match(url,"^http://.*someblah.*\/(\w+).aspx$");
if ( match.Success ) {
  string name = match.Groups[1].Value;
}

您没有指定ASPX文件前面可能出现的名称。我采用了使用匹配字母和数字的\w正则表达式字符的简单方法。您可以根据需要进行修改以包含其他项目。

答案 1 :(得分:3)

您实际上是在没有扩展名的情况下获取文件名。

虽然您特意要求使用正则表达式,但除非您确实需要使用正则表达式,否则我建议您使用System.IO.Path.GetFileNameWithoutExtension:


Path.GetFileNameWithoutExtension(Context.Request.FilePath)

答案 2 :(得分:1)

^(?:.+/)*(?:.+)?/someBlah/(?:.+/)*(.+)\.aspx$

这有点详尽,但它可以处理/ someBlah /不必位于字符串开头的情况。

?:运算符表示非捕获组,您的RegEx风格可能支持也可能不支持。

答案 3 :(得分:1)

Regex regex = new Regex("^http://.*someBlah.*/(\\d+).aspx$");
Match match = regex.Match(url);
int result;
if (match.Success)
{
   int.TryParse(match.Groups[1].Value, out result);
}

使用\ d而不是\ w确保您只匹配数字,除非设置了忽略大小写标志,否则someBlah的大小写必须正确。