-2

给定字符串

http://stackoverflow.com/questions/ask/index.php

…我想获得第三个斜杠(.*?)和最后一个斜杠之间的子字符串,即:

questions/ask

如何使用 C# 中的正则表达式完成此操作?

4

6 回答 6

2

你可以看看Uri.Segments楼盘

Uri uriAddress1 = new Uri("http://www.contoso.com/title/index.htm");
Console.WriteLine("The parts are {0}, {1}, {2}", uriAddress1.Segments[0], 
   uriAddress1.Segments[1], uriAddress1.Segments[2]);

产生以下输出:

The parts are /, title/, index.htm
于 2013-01-22T17:08:29.620 回答
2
Uri uri = new Uri("http://stackoverflow.com/questions/ask/index.php");
string result = uri.Segments[1] + uri.Segments[2];
result = result.Remove(result.Length - 1);
Console.WriteLine(result);
于 2013-01-22T17:08:56.623 回答
1
Uri url = new Uri("http://stackoverflow.com/questions/ask/index.php");
string s = string.Join("", url.Segments.Take(url.Segments.Length - 1)).Trim('/');
于 2013-01-22T17:09:52.140 回答
0

尝试使用现有的 Uri 和 Path 类,而不是字符串匹配和正则表达式。就像是:

 Path.GetDirectoryName(new Uri(url).AbsolutePath)
于 2013-01-22T17:08:27.157 回答
0

正确的方法是使用 Uri 对象。

Uri u = new Uri("http://stackoverflow.com/questions/ask/index.php");
string[] s = u.Segments;
于 2013-01-22T17:10:03.087 回答
0

其他答案是要走的路。但是,如果您仍在寻找正则表达式,这个应该可以工作:

([^/]*/[^/]*)/[^/]*$

您要查找的路径在第一个子匹配中。

于 2013-01-22T17:13:52.933 回答