Regex.Replace and Match

时间:2016-06-09 12:00:30

标签: c# asp.net

我有一个函数,我需要在文件路径中去掉前导和尾部斜杠以获取服务器名称。这条路不一定总是有领先的斜线。

这是我在应用的另一部分中找到的内容:

public static string ResolveToIP(string path) {
    return Regex.Replace(path, @"^\\\\(.*?)\\(.*)$",
        delegate(Match M) {
        try {
            IPAddress[] addresses = System.Net.Dns.GetHostAddresses(M.Groups[1].Value);
return "\\\\" + addresses[0].ToString() + "\\" + M.Groups[2].Value;
            } 
        catch {
              return path;
              }
            });
        }

因此,对于"////serverName/user7$/GTOUser"M.Groups[1]将返回"serverName",这就是我需要的。我有一个子串函数也可以工作,但我想知道是否有一种简单的方法可以使用已经存在但没有替换的相同正则表达式。

1 个答案:

答案 0 :(得分:2)

我想通了,比我想象的要简单得多:

string pattern = @"^\\\\(.*?)\\(.*)$";
Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
Match m = r.Match(AS.SourcePath);
string server = m.Groups[1].Value;