使用正则表达式获取URL的最后一部分

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"

1
你只是希望获得 guid 吗? - Mike Christensen
4个回答

17

使用 Uri 类解析 URL:

new Uri(s).Segments.Last()

应该是 Segments,而不是 Components,对吧? - poke
谢谢@Slaks,我应该将我的图像URL存储为Uri而不是字符串吗? - Caleb Jares
1
添加 using System.Linq; 以访问 Last() 方法。 - Felix

14

虽然使用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];

1
您可以使用这个表达式:
"[^/]*$"

这将选择没有前导斜杠的值。

0
你可以将 p 改为这样:
string p = @"/([^/]*)$";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接