【问题标题】:What Regular Expression Will Return A Network Drive Name Only?什么正则表达式将只返回网络驱动器名称?
【发布时间】:2013-07-20 06:11:41
【问题描述】:

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

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

\\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

适用于所有情况。

谁能帮我修改和/或更改我的正则表达式来做我需要它做的事情?

非常感谢。

【问题讨论】:

  • 你使用什么语言?
  • 我的程序是 C#,我使用 Regex.Match(fileName, pattern) 但我正在使用正则表达式测试网站 (regexpal.com) 进行测试。
  • 你可以在这里找到一个 .net 正则表达式测试器:regexstorm.net/tester
  • 太好了,我会检查一下谢谢!

标签: c# regex match backslash network-drive


【解决方案1】:

你可以用这个:

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

[^\\] 表示除反斜杠以外的所有字符

【讨论】:

  • 我正在使用在线正则表达式测试器 (regexpal.com),当我使用您的正则表达式时,结果是相同的 except 它在最后一种情况下确实有效,其中文件夹名称是 \\NETWORKDRIVE 它返回 \\NETWORKDRIVE。
  • @JanTacci:对不起,我还没有阅读你的整个帖子,现在重试。
  • 啊,这行得通!您介意解释一下 {2} 的作用吗?谢谢!
猜你喜欢
  • 2012-04-23
  • 2010-10-25
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多