C#正则表达式硬盘问题

时间:2014-06-09 18:49:10

标签: c# regex

如果用户选择了硬盘驱动器(例如“C:\”驱动器),我正在尝试使用正则表达式。
我试过了:

Match reg = Regex.Match(location, @"/[A-Z][:][\\]/");

并且:

Match reg = Regex.Match(location, "/[A-Z][:][\\]/");

第一行未检测到,第二行以例外结束:System.ArgumentException

3 个答案:

答案 0 :(得分:4)

从模式中删除前导和尾随/字符;它们不属于.NET正则表达式语法。

答案 1 :(得分:2)

据推测,您要检查字符串是否与C:\完全相同,但不是ABC:\\ and my dog。您需要锚点^$

^[A-Z]:\\$

在代码中:

foundMatch = Regex.IsMatch(yourstring, @"^[A-Z]:\\$");

请注意,我删除了[:][\\]中的括号(没有必要,因为在每种情况下我们都匹配单个文字字符,而不是几个字符中的一个字符字符)。

答案 2 :(得分:0)

它比你得到的要简单得多。所有你需要的是:

Match reg = Regex.Match(location, @"^[A-Z]:\\$");
  • @"..."语法是一个逐字字符串,它简化了正则表达式(和路径)。
  • ^只有在字符串开头处才会强制匹配
  • [A-Z]和你一样,与驱动器号匹配。
  • :\\是字面字符:\,反斜杠加倍,因此正则表达式不会尝试专门处理它。
  • $只有在匹配字符串末尾才会强制匹配

^和$因此强制它匹配整个输入字符串,而不是可能匹配中间的字符串。