正则表达式将仅返回网络驱动器名称?

时间:2013-07-20 06:11:41

标签: c# regex match backslash network-drive

我的程序读入一个字符串列表,其中包含位于网络驱动器上的文件和文件夹名称。

以下是我的列表可以包含的一些示例:

\\NETWORKDRIVE\text1.txt
\\NETWORKDRIVE\\text2.txt
\\NETWORKDRIVE\foldername\text3.txt
\\NETWORKDRIVE\\
\\NETWORKDRIVE\
\\NETWORKDRIVE

我需要一个正则表达式来仅返回网络驱动器名称(包括前导“\”字符)。

我尝试了各种正则表达式,我发现了一个几乎可以工作的表达式。这是我目前的情况:

^(\\+)(.*?)(\\+)

此正则表达式存在两个问题。

第一个问题是它匹配网络驱动器名称​​和尾随的“\”字符。第二个问题是,如果网络驱动器名称没有以任何“\”字符结尾,则它只匹配前导“\”字符。

以下是我的结果:

\\NETWORKDRIVE\text1.txt => \\NETWORKDRIVE\
\\NETWORKDRIVE\\test2.txt => \\NETWORKDRIVE\\
\\NETWORKDRIVE\foldername\text3.txt => \\NETWORKDRIVE\
\\NETWORKDRIVE\\ => \\NETWORKDRIVE\\
\\NETWORKDRIVE\ => \\NETWORKDRIVE\
\\NETWORKDRIVE => \\

正如你所看到的,我没有得到我想要的结果。我只想要结果:

\\NETWORKDRIVE

适用于所有情况。

任何人都可以帮我修改和/或更改我的正则表达式以执行我需要它做的事情吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用:

^\\{2}[^\\]+

[^\\]表示除反斜杠

以外的所有字符