5

这是我到目前为止所拥有的:

string s = @"http://www.s3.locabal.com/whatever/bucket/folder/guid";
string p = @".*//(.*)";
var m = Regex.Match(s, p);

但是,这会返回"www.s3.locabal.com/whatever/bucket/folder/guid"

4

4 回答 4

16

使用Uri该类解析 URL:

new Uri(s).Segments.Last()
于 2012-11-13T22:28:49.067 回答
13

尽管Uri.Segments可能是最好的方法,但这里有一些替代方法:

string s = "http://www.s3.locabal.com/whatever/bucket/folder/guid";

// Uri
new Uri(s).Segments.Last();

// string
s.Substring(s.LastIndexOf("/") + 1);

// RegExp
Regex.Match(s, ".*/([^/]+*)$").Groups[1];
于 2012-11-13T22:37:58.530 回答
1

你可以使用这个表达式:

"[^/]*$"

这将选择不带斜线的值。

于 2012-11-13T22:49:10.157 回答
0

您可以将 p 更改为:

string p = @"/([^/]*)$";
于 2012-11-13T22:39:47.837 回答