如果用户选择了硬盘驱动器(例如“C:\”驱动器),我正在尝试使用正则表达式。
我试过了:
Match reg = Regex.Match(location, @"/[A-Z][:][\\]/");
并且:
Match reg = Regex.Match(location, "/[A-Z][:][\\]/");
第一行未检测到,第二行以例外结束:System.ArgumentException
答案 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]
和你一样,与驱动器号匹配。:\\
是字面字符:
和\
,反斜杠加倍,因此正则表达式不会尝试专门处理它。$
只有在匹配字符串末尾才会强制匹配^和$因此强制它匹配整个输入字符串,而不是可能匹配中间的字符串。