如何使用ASP.NET中的Regex从请求URL中提取文件名

时间:2013-02-06 09:17:46

标签: c# asp.net regex

我需要从请求网址中的任何只有.aspx扩展名的请求中提取文件名+扩展名。对于前者如果请求的网址是 - http://www.abcd.com/index.aspx?a=1&B=2,那么它应该返回index.aspx。如果请求的网址是http://abcd.com/products/pages/page1,那么它应该返回空。如果请求的网址是http://abcd.com/images/img1.gif,那么它应该返回空。

编辑:如果网址中的其他地方有aspx,那么它可能会造成实际问题。但正确转义.并在网址中查找.并获得第一个匹配可能会解决问题,因为主机名通常没有.aspx

3 个答案:

答案 0 :(得分:2)

试试这个:

   Match fileNameMatch = Regex.Match("url", @"\w+\.aspx");
   string fileName = fileNameMatch.Value;

答案 1 :(得分:1)

我只想把帽子戴在戒指上。

像StackOverflow上的大多数问题一样..正则表达式不是答案。我的意思是......它一个答案..但它类似于唤醒一个巨人并要求它为你压蚂蚁。

System.Uri uri = new System.Uri("http://www.abcd.com/page/index.aspx?a=1&B=2'");
string fileName = Path.GetFileName(uri.LocalPath);
if (fileName.EndsWith(".aspx")) {
    // this is what you want
}

答案 2 :(得分:0)

要仅提取以.aspx结尾的文件,请使用此正则表达式:

var r = new Regex(@"\w+\.aspx");
var match = r.Match(Request.RawUrl);

if (match.Success)
{
    //your logic here
    var filename = match.Value;
}