拆分包含多个网络路径的字符串

时间:2013-03-12 08:06:02

标签: c# regex path

我有一个包含多个网络路径位置的字符串。它可以是2,3或任何数字。我想分成多条路径。我正在使用正则表达式,但我没有得到理想的结果。

string samplePath = "\\Computer1\Folder\Folder \\Computer2\Folder\New Folder \\Computer\New Folder"

我无法通过将空格用作分隔字符来拆分它,因为文件夹名称中可以包含空格。 这是我用来获得我想要的结果的正则表达式。

var pattern = @"^\\{2}[\w-]+(\\{1}(([\w-][\w-\s]*[\w-]+[$$]?)|([\w-][$$]?$)))+";
var matches = Regex.Matches(samplePath, pattern, RegexOptions.IgnoreCase);
foreach (var match in matches)
    myCollectionList.Add(match.ToString());

此后发生的事情是我只得到一个结果(第一条路径)。匹配数是1.问题出在哪里。

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式拆分

\s*(?=\\)

所以,就像

Regex.Split(input,yourRegex);

答案 1 :(得分:1)

使用Regex.Split

string source = @"\\Computer1\Folder\Folder \\Computer2\Folder\New Folder \\Computer\New Folder";

string[] result = Regex.Split(source, @" (?=\\\\)");

    foreach (string a in result) {
    Console.WriteLine(a);
}

这将打印

\\Computer1\Folder\Folder  
\\Computer2\Folder\New Folder  
\\Computer\New Folder

@" (?=\\\\)"是一个正则表达式,只有在后跟两个反斜杠时才匹配空格。 (?=\\\\)positive lookahead assertion