【发布时间】:2013-03-12 08:06:01
【问题描述】:
我有一个包含多个网络路径位置的字符串。它可以是 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。问题出在哪里。
【问题讨论】:
-
为什么要使用正则表达式?为什么不直接按空间分割?还是通过“\\”来解决这个问题?它在运行时也会更快。
-
请注意,路径中的多个反斜杠是有效的:C:\path1\\path2\\\filename.txt 等价于 c:\path1\path2\filename.txt。当错误地连接路径时,可能会发生这种情况。