我正在尝试找到目录引用的相对路径中的匹配数(“..\
”)。所以我有以下模式:“(\.\.\\)
”,它按照预期的路径“..\..\a\b
”工作,它会给我2个成功的组(“..\
”),但是当我尝试路径“..\a\b
”当它应该返回时它也将返回2.我在一个注册工具如Expresso中尝试了这个,它似乎在那里工作但不在.net,任何想法吗?
答案 0 :(得分:1)
请改为尝试:
(\.\.\\)
点(.
)匹配任何字符,而不是字面值。要匹配文字值,必须使用前导反斜杠将其转义。
答案 1 :(得分:0)
我得到了正确答案,请尝试以下方法:
Console.WriteLine(Regex.Matches(@"..\..\a\b", @"(\.\.\\)").Count); //2
Console.WriteLine(Regex.Matches(@"..\a\b", @"(\.\.\\)").Count); //1
您是否在.NET中为\
转义或使用文字字符串?
答案 2 :(得分:0)
由于Expresso在.net上运行,你的声明“我在一个注册工具如Expresso中尝试过它,它似乎在那里工作,但在.net中没有工作”似乎没有多大意义。
这表明我的不是正则表达式是问题,而是你对它的使用
仔细查看您用于收集结果的Regex方法以及处理这些结果的方法,这可能是问题所在。
希望这有帮助!
答案 3 :(得分:0)
你是否逃脱反斜杠以逃避正则表达式中的点?即"\\.\\.\\\\"
或@"\.\.\\"
?
您始终无法使用Regex执行此任务并使用
Int32 count = url.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries)
.Where(s => s == "..")
.Count();
代替。 =)