如何从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();