我需要从请求网址中的任何只有.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
。
答案 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;
}