0

我有一个包含多个网络路径位置的字符串。它可以是 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。问题出在哪里。

4

2 回答 2

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

@" (?=\\\\)"是一个正则表达式,仅当空格后跟两个反斜杠时才会匹配。(?=\\\\)是一个积极的前瞻断言

于 2013-03-12T08:17:50.043 回答
1

你可以用这个正则表达式拆分它

\s*(?=\\)

所以,就像

Regex.Split(input,yourRegex);
于 2013-03-12T08:11:11.670 回答