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

uwopmtnx  于 2023-06-25  发布在  其他
关注(0)|答案(6)|浏览(107)

有人能告诉我如何从UNC中提取服务器名称吗?
例如
//服务器名称/目录/目录
编辑:我很抱歉,但看起来我需要澄清一个错误:路径实际上更像是:

//servername/d$/目录

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

w8rqjzmb

w8rqjzmb1#

Uri

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

3duebb1j2#

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

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

服务器名称将是\0$0,或者仅仅是函数的结果,这取决于您如何调用它以及您的语言提供的内容。
regex注解模式下的解释:

(?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.
mec1mxoz

mec1mxoz3#

这个应该可以了

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

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

s4n0splo

s4n0splo4#

匹配servername的正则表达式:

^//(\w+)
wlp8pajw

wlp8pajw5#

很丑,但它只是工作:

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

aij0ehis6#

使用System.Uri主机属性:https://learn.microsoft.com/en-us/dotnet/api/system.uri.host?view=net-7.0

var path = @"\\servername\d$\directory";
var uncPath = new Uri(path);
var serverName = uncPath.Host; // returns "servername"

相关问题