我试图让JJ01G3C5-10A6S0
脱离:
\\JJ01G3C5-10A6S0\C$\2015\Mar\24\
带
Regex reg = new Regex("[^\\\\].+\\");
注意:我不能假设该值将特别采用这种格式,因此我终止字符串的唯一方法是假设它以双反斜杠开头\\然后是一些数据......然后以一个数据终止反斜杠\
然而这引起了我的注意:
未处理的异常:System.ArgumentException:解析
"[^\\].+\"
- 模式结尾处的非法\
。
有没有办法让反斜杠作为正则表达式终结符?
答案 0 :(得分:3)
当您编写正则表达式时,最好使用verbatim string literals,即将@
作为双引号字符串的前缀。这可以防止编译器将反斜杠视为转义字符。如果没有@
,则需要将所有反斜杠加倍。
此外,您不需要使用方括号。这些是用于角色类。
Regex reg = new Regex("^\\\\\\\\.+\\\\");
或等效(更容易理解)
Regex reg = new Regex(@"^\\\\.+?\\");
这解析为:
^
行首\\
表示字面反斜杠\\
表示另一个字面反斜杠.+?
意味着不止一个字符\\
表示另一个字面反斜杠 +?
符号表示它非贪婪,它匹配尽可能少的字符,以使整个事物匹配。否则它会尝试匹配所有内容。
答案 1 :(得分:3)
替代假设它是一条未路径:
string unc_server_name = new Uri(@"\\JJ01G3C5-10A6S0\C$\2015\Mar\24\").Host;
答案 2 :(得分:2)