-1

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

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

4

3 回答 3

2

试试这个:

   Match fileNameMatch = Regex.Match("url", @"\w+\.aspx");
   string fileName = fileNameMatch.Value;
于 2013-02-06T09:22:25.850 回答
2

我只是想把我的帽子扔在这里。

就像 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
}
于 2013-02-06T10:03:27.053 回答
0

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

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

if (match.Success)
{
    //your logic here
    var filename = match.Value;
}
于 2013-02-06T09:21:29.640 回答