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