string output = @"D:\C_Drive\Desktop\z3-str\Z3-str.py";
output = output.Replace(@"\", "/");
output = Regex.Replace(output, @"(\w):/([^\\]*)", "/cygdrive/$(1)/$(2)");
对于上面的代码,我希望输出为
/cygdrive/D/C_Drive/Desktop/z3-str/Z3-str.py
但它给了我
/cygdrive/$(1)/$(2)
问题是什么
答案 0 :(得分:1)
反向引用不起作用的原因是您用括号括起了ID。您可以用大括号将它们括起来以消除任何歧义,但由于您只有2,因此您不需要它们。
只需使用$1
和$2
:/cygdrive/$1/$2
。
请参阅IDEONE demo
由于您将所有\
替换为/
,因此您也可以使用.*
代替[^\\]*
(您再也没有\
,因此你只需匹配字符串的其余部分):
output = Regex.Replace(output.Replace("\\", "/"), @"(\w):/(.*)", "/cygdrive/$1/$2");