如何从UNC中提取服务器名称

有人能告诉我如何从UNC中提取服务器名称吗?

恩。

//服务器/目录/目录

编辑:我道歉但看起来我需要澄清一个错误:路径实际上更像是:

//服务器/ d $ /目录

我知道这可能会改变一些事情

Uri怎么样:

 Uri uri = new Uri(@"\\servername\d$\directory"); string[] segs = uri.Segments; string s = "http://" + uri.Host + "/" + string.Join("/", segs, 2, segs.Length - 2) + "/"; 

只是另一种选择,为了显示不同的选项:

 (?<=^//)[^/]++ 

服务器名称将在\0$0或者仅仅是函数的结果,具体取决于您调用它的方式以及您的语言提供的内容。

正则表达式注释模式中的说明:

 (?x) # flag to enable regex comments (?<= # begin positive lookbehind ^ # start of line // # literal forwardslashes (may need escaping as \/\/ in some languages) ) # end positive lookbehind [^/]++ # match any non-/ and keep matching possessively until a / or end of string found. # not sure .NET supports the possessive quantifier (++) - a greedy (+) is good enough here. 

这应该可以解决问题。

 ^//([^/]+).* 

服务器名称位于第一个捕获组中

正则表达式匹配servername

 ^//(\w+) 

丑陋但它只是工作:

 var host = uncPath.Split(new [] {'\\'}, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();