Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ASP.NET中使用正则表达式从请求url提取文件名_C#_Asp.net_Regex - Fatal编程技术网

C# 如何在ASP.NET中使用正则表达式从请求url提取文件名

C# 如何在ASP.NET中使用正则表达式从请求url提取文件名,c#,asp.net,regex,C#,Asp.net,Regex,我需要从请求url中提取任何只有.aspx扩展名的请求的文件名+扩展名。例如,如果请求的url为-则应返回index.aspx。如果请求的url为,则应返回空。如果请求的url为,则应返回空 编辑:如果在url中的其他任何地方有一个aspx,那么它可能会造成实际问题。但是正确地转义并在url中查找,并获得第一个匹配可能会解决问题,因为主机名中通常没有.aspx。要仅提取以结尾的文件,请使用以下正则表达式: var r = new Regex(@"\w+\.aspx"); var match =

我需要从请求url中提取任何只有.aspx扩展名的请求的文件名+扩展名。例如,如果请求的url为-则应返回index.aspx。如果请求的url为,则应返回空。如果请求的url为,则应返回空


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

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

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

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

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

我只想把我的帽子扔进拳击场

像大多数关于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
}

如果要在uri为“”的情况下匹配
,请将
转义为“pageindex.aspx”@algreat更新了我的答案,以处理这些问题和所有情况。url应该是什么样的
http://forums.asp.net/t/1775283.aspx/1
return?@OscarMederos它当然应该返回1775283.aspx。我知道它返回www.aspx,但它可能适合@Siva Bathula,因为这样的URL非常具体