How to pull the server name from a UNC

2019-03-19 06:14发布

Would anyone be able to tell me how to pull the server name out of a UNC?

ex.

//servername/directory/directory

Edit : I apologize but it looks like I need to clarify a mistake: the path actually is more like:

//servername/d$/directory

I know this might change things a little

标签: c# regex uri
5条回答
对你真心纯属浪费
2楼-- · 2019-03-19 06:56

Just another option, for the sake of showing different options:

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


The server name will be in \0 or $0 or simply the result of the function, depending on how you call it and what your language offers.


Explanation in regex comment mode:

(?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.
查看更多
对你真心纯属浪费
3楼-- · 2019-03-19 07:04

Regular expression to match servername:

^//(\w+)
查看更多
Lonely孤独者°
4楼-- · 2019-03-19 07:10

How about Uri:

Uri uri = new Uri(@"\\servername\d$\directory");
string[] segs = uri.Segments;
string s = "http://" + uri.Host + "/" + 
    string.Join("/", segs, 2, segs.Length - 2) + "/";
查看更多
啃猪蹄的小仙女
5楼-- · 2019-03-19 07:12

Ugly but it just works:

var host = uncPath.Split(new [] {'\\'}, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault();
查看更多
The star\"
6楼-- · 2019-03-19 07:19

This should do the trick.

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

The server name is in the first capturing group

查看更多
登录 后发表回答